异常是一种class,因此它本身带有类型信息,并且从Throwable继承;

捕获异常时,多个catch语句的匹配顺序非常重要,子类必须放在前面;

finally语句保证了有无异常都会执行,它是可选的;

调用printStackTrace()可以打印异常的传播栈,对于调试非常有用;

捕获异常并再次抛出新的异常时,应该持有原始异常信息;

Exception
├─ RuntimeException
│  ├─ NullPointerException
│  ├─ IndexOutOfBoundsException
│  ├─ SecurityException
│  └─ IllegalArgumentException
│     └─ NumberFormatException
├─ IOException
│  ├─ UnsupportedCharsetException
│  ├─ FileNotFoundException
│  └─ SocketException
├─ ParseException
├─ GeneralSecurityException
├─ SQLException
└─ TimeoutException

日志

Commons Logging是使用最广泛的日志模块;