1.可以只写一个异常处理来捕获所有类型的异常。
2.栈轨迹。printStackTrace()方法提供的信息可以由getStackTrace()方法直接访问,这个方法将返回一个由栈轨迹中的元素构成的数组,其中每一个因素表示栈中的一帧。
3.重抛异常会把异常抛给上一级环境中的异常处理程序,同一个try块的后续catch子句将被忽略。
4.异常对象重新抛出。如果只是把当前异常对象重新抛出,那么printStackTrace()方法显示的将是原来异常抛出点的调用栈信息,而并非重新抛出点的信息。
5.异常链。常常会需要在捕获一个异常后抛出另一个异常,并且希望把原始的信息保存下来,这称作异常链。
6.Throwable的子类在构造器中都可以接受一个cause对象做为参数。这个cause表示原始异常,这样就可以把原始异常传递给新的异常。
7.有趣的是,在Throwable的子类中,只有三种基本的异常类提供带cause参数的构造器。它们是Error、Exception以及RuntimeException。如果要把其他类型的异常链接起来,就应该使用initCause()方法而不是构造器。