异常是一种class
,因此它本身带有类型信息,并且从Throwable
继承;
捕获异常时,多个catch
语句的匹配顺序非常重要,子类必须放在前面;
finally
语句保证了有无异常都会执行,它是可选的;
调用printStackTrace()
可以打印异常的传播栈,对于调试非常有用;
捕获异常并再次抛出新的异常时,应该持有原始异常信息;
Exception
├─ RuntimeException
│ ├─ NullPointerException
│ ├─ IndexOutOfBoundsException
│ ├─ SecurityException
│ └─ IllegalArgumentException
│ └─ NumberFormatException
├─ IOException
│ ├─ UnsupportedCharsetException
│ ├─ FileNotFoundException
│ └─ SocketException
├─ ParseException
├─ GeneralSecurityException
├─ SQLException
└─ TimeoutException
Commons Logging是使用最广泛的日志模块;