1.
捕获Exception e 的不同方法
e.getMessage(): Here's my Exception
e.toString(): java.lang.Exception: Here's my Exception
e.printStackTrace():java.lang.Exception: Here's my Exception at ExceptionMethods.main
2.
e.printStackTrace():会打印出从里到外的异常抛出点
违例堆栈路径无论如何都会记住它的真正起点,无论自己被重复“掷”了好几次。
throw e.fillInStackTrace();会使抛出点为异常的起点
throw new NullPointerException("from main"); 只知道从main获得的异常,不知道内部
3.
①继承和实现同时存在时,方法的存在覆盖和实现时,仅继承继承方法的异常,若实现继承类中没有的方法,就可以抛出接口中的异常
②构造器中,需要列明继承类和实现类的所有构造器异常
③若父类中的方法没有抛出异常,则子类中重写的方法也不能抛出异常
④若父类中的方法有抛出异常,而子类中的重写方法也可以不抛出异常
⑤编译器就会强迫我们只捕获特定于那个类的违例。但假如我们上溯造型到基础类型,编译器就会强迫我们捕获针对基础类的违例
⑥用于一个特定方法的“违例规范接口”可能在继承和覆盖时变得更“窄”,但它不会变得更“宽”
4.finally都会在违例控制机制转到更高级别搜索一个控制器之前得以执行
5.catch(Exception e)能捕获一个Exception 以及从它衍生的任何类