异常处理
异常处理
- Java将异常分为两种:
- Checked异常:在编译阶段被处理的异常(被强制处理)
- Runtime异常:运行时异常,不需要处理
- Java的异常机制主要依赖于try,catch,finally,throw,throws五个关键字
- try块:try{},花括号不能省略
- catch后跟异常类型和代码块,花括号不能省略
- 多个catch块后可以跟一个finally块,用于回收try块里打开的物理资源
- throw用于抛出一个具体的异常
- throws作为语句使用,用于声明该方法可能抛出的异常
- java垃圾回收机制不会回收物理资源
- try块是必须的,catch块和finally块至少出现一个
- 除非在try块中调用了退出虚拟机的方法(System.exit(0)😉,否则总会先执行finally(重点)
- 所有的异常类继承根类Throwable,它派生异常(Exception)和错误(Error)。
- Error:无法处理,比如说内存溢出
- Exception:需要编写代码处理
- Throwable类的方法有:
- getMessage():获取异常信息,返回字符串。
- toString():获取异常类名和异常信息,返回字符串。
- printStackTrace():获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。
- 捕获异常时先处理小异常,再处理大异常(把Exception类对应的catch块放在最后)
- 多异常捕获,多异常类型之间用|隔开,异常变量用final隐式修饰,不能再赋值
- Java7后资源实现类实现了AutoCloseable或Closeable接口,try语句实现close()方法可以自动回收资源
- 打开文件,打开数据库时必须使用try,catch,finally异常处理
- 异常处理规则:
-> 不要过度使用异常
-> 不要使用过于庞大的try块
-> 不要忽略捕获到的异常
-> 避免使用Catch All语句
不为当下而战,何以颠覆未来