Java 异常分析

Java中的异常体系:

 

 

 

由图可见,Throwable分为错误(Error)和异常(Exception);Error类和Exception类都继承自Throwable类。

 

 

Error的继承关系:

Exception的继承关系:

 

 

 

 

Error:

1.总是不可控制的(unchecked)。

2.经常用来用于表示系统错误或低层资源的错误。(比如说计算机硬件的突然损坏导致错误)

 

Exception:

 

1.可以是可被控制(checked) 或不可控制的(unchecked)。

2.表示一个由程序员导致的错误。(下面详细介绍)

 

 

1.Exception可以分为受检异常和非受检异常(runtimeexception)

受检异常:SQLException,   IOException,  ClassNotFoundException;(编译时检测出异常,如果不进行捕获或者抛出声明处理,编译都不会通过。)

非受检异常:NullPointerException, EventException,  ArithmeticExption ;  (编译时无法检测出异常,运行时才检测出异常)

 

2.Java处理异常机制

一旦产生异常,则系统会自动产生一个异常实例化对象

此时如果存在try语句,则会自动找到匹配的catch语句执行,如果没有异常处理,则程序将会退出,

系统报告异常在控制台 所有异常根据catch方法参数进行匹配异常的实例化对象,如果匹配成功,则由匹配成功的catch语句进行处理;

 

 

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

 

package test;

import java.awt.Image;

import javax.swing.ImageIcon;

public class 异常 {
	public static void main(String[] args) {
	
		int i = 10 ;  // 定义整型变量

		int j = 0 ;   // 定义整型变量

	//	int temp = i / j ; // 此处产生了异常

	//	System.out.println("两个数字相除的结果:" + temp) ;
		//Exception in thread "main" java.lang.ArithmeticException: / by zero
		//at test.异常.main(异常.java:15)
		
		try{

			int result = i/j;
		}catch(ArithmeticException e){
			System.out.println("执行了这一步");
		}finally{
			
			System.out.println("执行了finally内容");
		}



		}	
	}


输出结果为:    执行了这一步
                         执行了finally内容

 

 

 

 

 

 

 

 

注意:

1.catch定义,由上到下,异常范围必须由小到大或者同级别的

2.运行时异常,catch中可以随意定义类型,程序运行时,会根据catch参数自动匹配。

3.非运行时异常,则catch中定义的异常,在try代码块中必须存在,如果没有类似异常存在,则不允许被定义。

 

 

4.在进行异常处理之后,在异常的处理格式中还有一个finally语句,name此语句将作为异常的统一出口,不管是否产生异常, 最终都要执行此段代码。

5.try语句不能单独存在,可以和catch、finally组成的try…catch、try…catch…finally、try…finally三种结构,catch语句可以有一个或者多个,但是try、catch、finally不能单独存在

6.try、catch、finally三个代码块中的语句变量独立存在,不能相互访问

7.多个catch语句,java虚拟机会自动匹配其中一个异常或者异常子类,就执行这个catch块中代码,并且不会再执行其他catch块中的代码.

 

 

 

 

 

3.throw 和 throws关键字

 

 

 

Throws关键字主要在方法的声明上使用,表示方法中不处理异常,而交给调用处处理。实际上对于java程序来讲, 如果没有加入任何的异常处理,默认有jvm进行异常的处理操作
Throw关键字表示在程序中手动抛出一个异常,因此从异常处理机制上看,所有的异常一旦产生后,实际上抛出的就是一个异常的实例化对象, name此对象也可以有throw直接抛出
 

<span style="font-size:18px;">public int div(int a,int b) throws AWTException{//交给调用处处理
		
		
		try {
			Robot robot = new Robot();
		} catch (AWTException e) {
			throw new AWTException("异常问题");//手动抛出一个异常
		}
	
	}</span>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值