java 异常

1.异常结构分类:

图片说明

2.

(1)Error类层描述了java运行时系统内部错误和资源耗尽错误
(2)Exception层次结构分为两个分支:
RuntimeException:由程序错误导致的异常。如错误的类型转换、数组访问越界、访问 Null指针。“如果出现RuntimeException异常,那么一定是你的问题”;
其他异常:程序本身没有问题,但由于像I/O错误这类异常问题属于其他异常。例如:试图在文件尾部读取数据、试图打开一个不存在的文件等。
(3) Error和RuntimeException为非受检查异常,其它异常为受检查异常

3.

(1)throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常
(2)当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理
(3)throws出现在方法函数头;而throw出现在函数体.throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

(4)如果子类覆盖超类中的一个方法,子类方法中声明的受检查异常不能比超类方法中声明的异常更通用;
(5)如果超类方法中没有抛出任何受检查异常则子类也不能抛出任何受检查异常。一旦方法中抛出了异常,这个方法就不能返回给调用者,不必为返回默认值和错误代码担忧。

4.

try{
 code
 more code
}catch(ExceptionType e){
 handler for this type
}finally{

}

(1)如果try快中抛出了一个在catch子句中说明的异常类,那么程序将跳过try语句的其余代码,执行catch子句中的处理器代码。
(2)如果方法中的任何代码抛出了一个在catch子句中都有声明的异常类型,那么方***立即退出。
(3)无论是否抛出异常finally语句块最终都会执行。

5.

(1)当try块中包含return语句时,在执行return语句前会先执行finally块,如果finally块中也有return语句,这个return语句的返回值会将try块中return语句的返回值覆盖掉。
(2)如果try块中抛出异常,finally中也抛出相同类型异常,那么原始异常将会丢失,转而抛出finally中的异常

6.

.jdk1.7引入了资源自动关闭的接口AutoCloseable。一些资源也实现了该接口如preparedStatement、Connection、InputStream、outputStream等等资源接口。在使用的时候只需要把资源在try块中用小括号括起来就可以了。

try 
    (
        PreparedStatement pstmt = toConn.prepareStatement(sql);
        PreparedStatement pstmt1 = fromConn.prepareStatement(sql);
        ResultSet rs = pstmt.executeQuery();
        ResultSet rs1 = pstmt1.executeQuery()
    )
    {
        if(rs.next() || rs1.next()){
        }
    }
catch (Exception e) {
    e.printStackTrace();
        }
全部评论

相关推荐

10 5 评论
分享
牛客网
牛客企业服务