/**
* 创建一个类,令其抛出异常,设置三个catch块来捕捉异常,
* 并输出异常信息,最后添加一个finally语句块,输出一条信息
*/
package Liu;
import java.util.Scanner;
class CatchException {
private int size;
private double len;
//构造方法1
public CatchException() {
}
//构造方法2
public CatchException(int x) {
this.size = x;
}
//构造方法4
public CatchException(int x,double s) {
this.size = x;
this.len = s;
}
public void GetMessage() {
try {
if(this.size == 0) {
this.size = size/size;
}else if(this.len == 0) {
String Cout[] = {"1","2","3"};
System.out.println(Cout[3]);
}else {
;
}
}catch (ArithmeticException e) {
System.out.println("程序抛出算术异常,除数不能为0!");
}catch(ArrayIndexOutOfBoundsException a) {
System.out.println("程序抛出异常,数组下标越界!");
}catch(Exception ex) {
System.out.println("程序抛出异常,未知名异常!");
}finally {
System.out.println("测试类编辑运行完毕");
}//finally
}//GetMessage方法
}
//Test类
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
CatchException c = new CatchException(scanner.nextInt(),scanner.nextDouble());
c.GetMessage();
}
}
输入 0 1
程序抛出算术异常,除数不能为0!
测试类编辑运行完毕
输入1 0
程序抛出异常,数组下标越界!
测试类编辑运行完毕
/**
* 自定义异常类MyException,它有一个构造函数和一个获取idnumber的方法getId(),
* 当Exce类regist()方法接受的形参小于0时,抛出Myexception异常,并在manager()方法中捕获
*
*/
package Liu;
import java.util.Scanner;
//异常类
class MyException extends Exception{
private int idnumber;
//异常类构造方法
public MyException(String message,int id) {
super(message);
this.idnumber = id;
}
//getId()方法获取idnumber
public int getId() {
return this.idnumber;
}
}
//Exce类
class Exce {
public void regist(int num)throws MyException{
if(num < 0) {
System.out.println("登记号码" + num);
throw new MyException("号码为负值,不合理", 3);
}
}
//manager()方法
public void manager() {
try {
regist(-100);
}catch(MyException m) {
System.out.println("登记失败,出错种类" + m.getMessage());
}finally {
System.out.println("本次登记操作结束");
}
}
}
//Test类
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Exce ex = new Exce();
ex.manager();
}
}
输出:
登记号码-100
登记失败,出错种类号码为负值,不合理
本次登记操作结束
/**
* 定义一个异常类,通过输入参数得到两个双精度数,求出这两个数相除的结果
*如果输入的数不在30-80之间,则抛出一个异常,并显示:
*输入的数据超出范围,请重新输入!
*/
package Liu;
import java.util.Scanner;
//异常类
class myException extends Exception{
//异常类继承父类构造方法
public myException() {
super();
}
//通过输入参数得到两个双精度数,求出这两个数相除的结果方法
public void GetNumber(double a,double b) throws Exception{
if(a>=30&&a<=80&&b>=30&&b<=80) {
System.out.println(a/b);
}else {
throw new myException();
}
}
//异常输出message()方法
public static void message() {
System.out.println("输入的数据超出范围,请重新输入!");
}
}
//Test类
public class Test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
myException mEx = new myException();
double x,y;
x = scanner.nextDouble();
y = scanner.nextDouble();
try {
mEx.GetNumber(x, y);
}catch(myException m) {
myException.message();
} catch (Exception e) {
e.printStackTrace();
}finally {
System.out.println("程序运行完毕");
}//finally
}//main()
}
输出:
40 50
0.8
程序运行完毕
3 7
输入的数据超出范围,请重新输入!
程序运行完毕
/**
* 定义一个异常类Test,要求完成如下操作:
* 定义一个money类,包括存款余额,存款操作,取款操作,获取余额。
* 当存款余额小于取款额时,显示当前余额,并告知不能取款,否则显示成功取款的信息
*
*/
package Liu;
import java.awt.peer.TrayIconPeer;
import java.util.Scanner;
//money类
class money {
private double RestMoney;
//money类的构造方法
public money(double m) {
this.RestMoney = m;
}
//存款操作
public void InputMoney(double m) {
this.RestMoney = this.RestMoney + m;
}
//获取余额
public double GetMoney() {
return this.RestMoney;
}
//取款操作
public void OutputMoney(double need) {
try {
if(need<=this.RestMoney) { //可以取款
this.RestMoney = this.RestMoney - need;
System.out.println("成功取出" + need);
}else {
System.out.print("当前余额:" + this.RestMoney);
throw new Test();
}
}catch (Test e) {
// TODO: handle exception
e.Message();
}finally {
System.out.println("完成取款操作");
}
}
}
//Test异常类
public class Test extends Exception{
//继承异常父类构造方法
public Test() {
super();
}
//异常输出
public void Message() {
System.out.println(",不能取款!");
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
money mm = new money(1350);
mm.OutputMoney(1480);
mm.OutputMoney(1000);
}//main()
}
当前余额:1350.0,不能取款!
完成取款操作
成功取出1000.0
完成取款操作
/**
* 编写一个求整数阶乘的程序,包含异常机制
*/
package Liu;
import java.util.Scanner;
//自定义异常类
class MyException extends Exception {
//继承父类构造方法
public MyException() {
super();
}
public void message() {
System.out.println("输入数值错误,请输入大于等于0的非负整数!");
}
}
public class Factorial {
public int Fact(int number) {
try {
if(number>0) {
return number*Fact(number-1);
}else if(number == 0) {
return 1;
}else if(number<0) {
throw new MyException();
}
}catch (MyException e) {
// TODO: handle exception
e.message();
}
return number;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
Factorial f = new Factorial();
System.out.println(f.Fact(scanner.nextInt()));
}
}
输入:
-1
输入数值错误,请输入大于等于0的非负整数!
输入:
0
1
输入:
5
120