/**
 * 创建一个类,令其抛出异常,设置三个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