基本概念
- 所有的异常父类都是Throwable,Throwable将异常分为两大类:Error 和 Exception。 其中Error一般是由系统内部错误或资源耗尽等引起的错误。在程序中我们只需要考虑Exception异常既可。
- 将Error和RuntimeExceptionl类的所有异常称为非受查异常(unchecked),其他的称为受查异常(checked)在编程程序期间编译器会自动提示你会抛出异常。
- 一个方法一般将异常抛出(throws)给调用者进行捕获处理,
早抛出,晚捕获。
- finally 用于处理一些资源释放操作,
当finally里面出现return时,它会覆盖之前的return结果!!!
异常处理建议
- 捕获异常时,如果异常存在父子关系,如需对各个异常进行特殊捕获处理需要将子类放在父类之前。可以一个catch里面捕获多个异常,代码如下:
catch ( FileNotFoundException | UnknownHostException e ) { . . . }
- 对捕获异常进行设置为新的异常再抛出,调用在catch新抛出的异常时使用
e.getCause()
获取原始的异常信息:try { .... } catch (NullPointerException e) { Throwable se = new CustxxxxException("xxxx不能为空!"); se.initCause(e); throw se; } // 调用者 se.getCause();