JAVA异常分析

来源:互联网 发布:网络犯罪种类 编辑:程序博客网 时间:2024/05/23 21:31
    java异常体系可分为两大类:一是错误(Error);二是异常(Exception).    而异常也可分为运行时异常(非受检异常)和非运行时异常(受检异常);详情见下图:

异常结构体系图

JAVA异常处理的格式为:
try{
//可能出现异常的代码
}catch(异常的类型 变量){
//出现异常时执行的操作
}finally{
//异常的统一出口
}

publiuc void text(){、 int a = 5; int b = 0;try{    //当a除以b时,而除数不能为零,此时即会出现异常   int result = a/b;    }catch(ArithmeticException e){  //此异常为数学异常,如除数不能为零      System.out.println("出现异常");    } catch(Exception e){  //一个try里可以拥有多个catch,但异常范围必须是从小到大,如此处Exception 为所有异常的父类,所必须写在后面    System.out.println("出现异常");    }System.out.println(result );}

运行时异常与非运行时异常:
1、运行时异常,catch中可以随意定义类型,程序运行时,会根据catch参数自动匹配。(如上述即为运行时异常)
2、非运行时异常,则catch中定义的异常,在try代码块中必须存在,如果没有类似异常存在,则不允许被定义。

finally用途:
异常的统一出口,不管是否产生异常,都必须执行其中的代码;finally中的代码必然执行,除非程序中途错误。

throw与throws用途:
1、Throws关键字主要在方法的声明上使用,表示方法中不处理异常,二交给调用处处理。实际上对于java程序来讲, 如果没有加入任何的异常处理,默认有jvm进行异常的处理操作

2、Throw关键字表示在程序中手动抛出一个异常,因此从异常处理机制上看,所有的异常一旦产生后,实际上抛出的就是一个异常的实例化对象, name此对象也可以有throw直接抛出

注意:运行时异常,在程序中捕捉并throw后,方法中不一定要声明throws,而非运行时异常,在代码快中throw后,必须在方法中声明throws抛出异常

public class Priter{public static void main(String[] args) {try{  //而在此处则需扑捉异常,如果不扑捉,则会交给java虚拟机处理 Priter pr = new Priter();       pr.text();}catch(ArithmeticException e){    e.printStackTrace();  }}public void text() throws ArithmeticException{ //此处不扑捉异常,利用throws掏出异常 int a = 5; int b = 0; int result = a/b;System.out.println(result );}}

异常处理规则:
1.try语句不能单独存在,可以和catch、finally组成的try…catch、try…catch…finally、try…finally三种结构,catch语句可以有一个或者多个,但是try、catch、finally不能单独存在
2.try、catch、finally三个代码块中的语句变量独立存在,不能相互访问

0 0
原创粉丝点击