java之异常处理

来源:互联网 发布:海康网络监控方案 编辑:程序博客网 时间:2024/04/30 04:52

Throwable是所有异常了和错误类的基类

其中Error类是无法恢复的系统错误,用户应用程序中无法使用该类

我们要处理的是Exception类

Java异常:

运行期出现的错误

  

Java异常是java提供的用于处理程序中错误的一种机制

所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在)

设计良好的程序应该在异常发生时提供处理这里错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果 (程序的健壮性)

java程序在运行中,如果引发一个异常,系统会产生一个与异常类型对应的异常了的对象,这个过程称为异常的抛出。

 

 

在捕获前处理该异常

 

java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获异常。(程序发生异常时,如果不对异常进行相应处理,会引起程序执行的非正常终止。并将该异常打印到控制台

 

使用trycatch捕获异常,catch语句中需要设置要捕获类型的对象的类型,异常类型必须与try语句中可能抛出的异常类型一致,否则无法捕获到发生的异常

    try {

    System.out.println(2/0);

    }

    catch(ArrayIndexOutOfBoundsException e) {

       System.out.println("请与");

    }

无法捕获

 

系统处理异常时会自动生成对象,e为对这个对象所起的名字,对象只有定义了才能使用。

(一旦产生错误,系统就会初始化,可以认为是形参)

 

Java程序运行时,出现异常,首先会找catch语句,若没有,会抛出异常,打印到控制台

 

 

 

Throws子句

 

方法后接Throws,表明该方法未对可能产生的异常进行相应处理,调用该方法必须用trycatch捕获异常或者继续throws抛出异常,否则发生编译错误

 

必须对异常进行处理(非runtimeexception

 

Throw明确抛出异常

 

在一个try语句块中,基类异常捕获的语句不可以写在子类异常捕获语句的上面Trycatch

try语句块抛出一个异常时,程序的执行流程首先转向第一个catch语句,如果抛出的异常与catch语句处理的异常类型相匹配,程序执行该catch语句块,如果不匹配,则继续对第二个catch语句进行检查,若没有匹配的catch,则由java运行系统处理该异常。

此时,系统会终止程序的运行,并在标注输出上输出该异常的相关信息

 

 

1 catch语句应该紧接在try语句后面

2 try语句块中,如果某个语句抛出异常,该语句后的其他语句不再执行,程序流程转向匹配的catch语句,继续运行

 

 

try {

语句1

语句2

}

catch (SomeException e1) {

}

catch (SomeException e2) {

}finally {

}

 

若语句1抛出异常,则语句2不再执行,转向catch语句,比如捕捉到异常1,则执行异常1中的语句后,跳至finally中的语句(必执行)

 

Finally一般用于资源的清除的工作

 

 

捕获异常后,可以使用该异常的一些方法来捕获信息

GetMessage ()方法,用来得到有关异常事件的信息

PrintStackTrace()方法,用来追踪异常事件发生时堆栈的内容

 

自定义异常:

1 通过继承java.lang.Exception类声明自己的异常类

2 在方法适当的位置生成自定义异常的实例,并用throw语句抛出

3 在方法的声明部分用throws语句声明该方法可能抛出的异常

 

 

重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常

 

 

一个图

五个关键字

先逮小的,再逮大的

异常和重写的关系

原创粉丝点击