一、异常处理
异常处理就是针对程序可能出现的错误情况,进行抛出异常。要么终止程序,要么进行避免错误情况。就需要用到的语法是try(避免)。throws(对可能出现的情况进行抛出)。
在实际开发中,异常处理是必要的。因为比如编译型异常,如果没有异常处理。程序爆红不会通过编译,比如下面; //这是编译时可能的情况,Java是一门严谨的语言。
基本概念:
异常的体系结构:
主要异常类型:
java异常处理的方式;
有两种:方式一:try-catch-finally
方式二:throws + 异常类型
一二、try-catch的使用
先介绍第一种方式处理异常。这是抓抛模型处理。在编译型和运行型异常使用,其中,感觉运行型异常使用这种方式更加便利。因为编译型异常是必须要编写的,通过throws处理感觉代码更加简便。
基本概念:
注意事项:
try-catch的使用一定要注意异常类的继承关系。子类的异常放在上面。通过Ctrl+h可以查看继承关系。
异常类存在的两个方法:printStackTrace()和getMessage需要牢记。
一三、finally的使用
finally是和try-catch搭配使用的,finally在数据库操作、数据流操作里面是必不可少的操作。它是一个一定会执行的代码块。优先级比return还高。用在数据流这样的操作是为了关闭数据流或断开数据库连接。这样就可以防止内存泄漏。如果没有关闭操作。很可能会因为外部还有连接数据库,导致gc机制不会回收数据库。从而导致内存泄漏。它的优先级很高,看下图:
注意这个题的最后结果是11和栈的临时空间有关。
基本概念:
使用原因:
最主要原因是防止内存泄漏,但是在其它情况也会使用finally。比如catch代码块里面也出现异常。为了让后续代码执行。就必须加上finally。这样也可以增强代码健壮性。
扩展:单元测试
单元测试创建的方式有两种,联网情况下第二种方式最简便。
第二种方式:
面试题:
最终样式: