您的位置:首页 > 职场人生

黑马程序员----java异常处理机制

2014-12-23 16:29 162 查看

---------------------- android培训java培训、期待与您交流!
----------------------

1、异常

异常:就是不正常,是指程序在运行时出现的不正常情况。其实就是程序中出现的问题。异常就是java按照面向对象的思想将问题进行对象封装。这样就方便于操作问题以及处理问题。

异常的体系 Throwable Error

通常指JVM出现重大问题如:运行的类不存在或者内存溢出等。

不需要编写针对代码对其处理,程序无法处理。

Exception

在运行时运行出现的一些情况,可以通过try,catch,finally处理

异常处理两种方式:

1、捕获异常:try catch 直接处理可能出现的异常!

2、声明异常:throws 声明告诉调用者可能的异常,暴露问题,调用者自己处理!

2、异常处理格式

异常处理格式

try{

//可能出异常的代码

} catch(异常类 对象){

//处理该异常类型的语句

}

[finally] {

//一定会执行的代码

//catch块使用System.exit(1);除外

}

备注:当try语句块出现异常,程序会自动跳到catch语句块去找匹配的异常类型,并执行异常处理语句,finally语句块是异常的统一出口。

3、多异常处理

声明异常时尽可能声明具体异常类型,方便更好的处理;

方法声明几个异常就对应有几个catch块;

若多个catch块中的异常出现继承关系,父类异常catch块放在最后;

在catch语句块使用Exception类作为异常类型时:

所有子类实例都可以使用父类接收(向上转型),即所有的异常对象都可以使用Exception接收;

4、异常的分类

异常分类:

编译时被检查异常; ---> Checked异常

在程序中必须使用try...catch处理;

编译时不被检测的异常; ---> Runtime异常

可以不使用try...catch处理,但一旦出现异常就将由JVM处理。

特点:

Java编译器会检查它,也就说程序中一旦出现这类异常,要么是没有try-catch语句捕获,或throws语句没有声明抛出它,编译就不会通过,也就说这种异常,程序要求必须处理.

RuntimeException(运行时异常)是指因设计或实现方式不当而导致的问题.

比如,事先判断对象是否为null就可以避免NullPointerException异常,事先检查除数不为0就可以避免ArithmeticException异常;

特点:

这种异常Java编译器不会检查它,也就说程序中出现这类异常的时候,即使不处理也没有问题,但是一旦出现异常,程序将异常终止,若采用异常处理,则会被相应的程序执行处理.

5、声明异常(throws)

在可能出现异常的方法上声明抛出可能出现异常的类型:

声明的时候尽可能声明具体的异常,方便更好的处理.

当前方法不知道如何处理这种异常,可将该异常交给上一级调用者来处理(非RuntimeException类型的异常)。

方法一旦使用throws声明抛出方法内可能出现的异常类型, 该方法就可以不再过问该异常了;

一个方法调用另一个使用throws声明抛出的方法,自己要么try...catch , 要么也throws;

格式:

public 返回值类型 方法名(参数列表...)

throws 异常类A,异常类B... {

}

6、throw

自行抛出一个异常对象,抛出异常类的对象;

若throw抛出的是Runtime异常:

程序可以显示使用try...catch来捕获并处理,也可以不管,直接交给方法调用者处理;

若throw抛出Checked异常:

要么放在try里自己处理,要么放在一个throws声明的方法里面,交给调用者处理。

throws & throw

throws用于在方法上声明该方法不需要处理的异常类型。

throw用于抛出具体异常类的对象。

throws与throw的区别:

thorws用在方法上,后面跟异常类名,可以是多个异常类。

throw用在方法内,后面跟异常对象,只能是一个。

7、finally

异常的统一出口:

不管try块程序是否异常,也不管哪个catch执行,finally块总会执行。

try语句块或会执行的catch语句块使用了JVM系统退出语句例外;//System.exit(0);

try块必须和 catch块或和finally同在,不能单独存在,二者必须出现一个。

不要在finally中使用return 或throw语句,否则将会导致try、catch中的return或throw失效。

8、throw和catch同时使用

当异常出现在当前方法中,程序只对异常进行部分处理,还有一些处理需要在方法的调用者中才能处理完成,此时还应该再次抛出异常,这样就可以让方法的调用者也能捕获到异常;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: