JAVA学习笔记three:异常

	

  我们生活中经常会遇到一些异常,比如天气下雨后上课迟到,这不是主观产生的,在JAVA中也会因为硬件或代码等产生异常,它们在平常可能是对的,但是偶尔也会出现异常现象,就像看天气预报可能下雨带伞一样,代码可能出现异常,我们可以通过编程处理它。JAVA中异常体系可以表示如下:

受检异常在编译时就会产生异常,无法运行,例如robot类实例化时就会产生受检异常,同时非受检异常运行时才会产生异常,我们一般对非受检异常也并不会进行异常处理,一般都能在代码中修改消除。

    在JAVA当中的异常处理可以通过以下方式来实现:

	try{
			//可能出现异常的代码部分
	 }catch(异常类型 异常变量){
			//执行异常操作
	 }catch(异常类型 异常变量){
			 //执行异常操作
	 }…
	 finally{
    	//处理完try与catch操作后的收尾操作,异常统一出口
	 } 

  •     try的意思就是我们可以先试着运行一下,产生异常并进行捕捉,捕捉到异常,执行异常类型相对应的操作,如果没有进行捕捉或者捕捉到的异常没有相对应的类型,则程序将会报错退出,系统报告在控制台。
  •     在JAVA机制中,一旦产生异常,系统就会自动生成一个异常实例化对象,通过这个对象我们可以对异常进行操作
  •     所有异常根据catch方法参数进行匹配异常的实例化对象,如果匹配成功,则由匹配成功的catch语句进行处理。
注意:
  1. catch定义,由上到下,异常范围必须由小到大或者同级别的,否则eclipse就会报错,因为下面的异常总不会运行。
  2. 运行时异常,catch中可以随意定义类型,程序运行时,会根据catch参数自动匹配。
  3. 非运行时异常,则catch中定义的异常,在try代码块中必须存在,如果没有类似异常存在,则不允许被定义。
finally关键字:
在进行异常处理之后,在异常的处理格式中还有一个finally语句,name此语句将作为异常的统一出口,不管是否产生异常, 最终都要执行此段代码
throw与throws关键字:
  • Throws关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。实际上对于java程序来讲, 如果没有加入任何的异常处理,默认有jvm进行异常的处理操作
  • Throw关键字表示在程序中手动抛出一个异常,因此从异常处理机制上看,所有的异常一旦产生后,实际上抛出的就是一个异常的实例化对象, name此对象也可以有throw直接抛出
注意:运行时异常,在程序中捕捉并throw后,方法中不一定要声明throws,而非运行时异常,在代码快中throw后,必须在方法中声明throws抛出异常

异常处理规则:
1.try语句不能单独存在,可以和catch、finally组成的try…catch、try…catch…finally、try…finally三种结构,catch语句可以有一个或者多个,但是try、catch、finally不能单独存在。
2.try、catch、finally三个代码块中的语句变量独立存在,不能相互访问。
3.多个catch语句,java虚拟机会自动匹配其中一个异常或者异常子类,就执行这个catch块中代码,并且不会再执行其他catch块中的代码.。
测试例子:
public class Test {
	JFrame jf;
	public static void main(String[] args) throws AWTException{
		Test t = new Test();
		int v = t.div(20,0);
		System.out.println(v);
	}
	/**
	 * 做除法操作
	 */
	public int div(int a,int b) throws AWTException{
//		//会不会有异常情况出现???
//		jf.setVisible(true);
		
		//会不会有异常情况出现???可能会有异常:除数为0
		int result = 0;
		try{
			jf.setVisible(true);
			result = a/b;
		}catch(ArithmeticException e){
			throw new ArithmeticException();
		}catch(NullPointerException e){
			e.printStackTrace();
		}finally{
			//必须(一定)会执行
			System.out.println("执行了finally内容");
		}
		
		try {
			Robot robot = new Robot();
		} catch (AWTException e) {
			throw new AWTException("异常问题");
		}
//			
//		//ArithmeticException是运行时异常
//		//AWTException是检测性异常
//		
//		System.out.println("后续的代碼");
		return result;
	}
}
 



  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值