什么是异常:程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件。异常本身是一个对象,产生异常就是产生了一个异常对象。异常都是从类Throwable派生出来。包括运行时异常和飞运行时异常。(这个多说无益,知道怎么处理就行)
如何产生的:是由系统自动实例化一个异常对象。那这里的系统指的就是JVM。当然、我们可以自己new一个异常对象将其抛出。
自定义异常:可以通过继承Exception或者其子类。
如何处理异常:通过try…catch…finally语句进行捕获异常。当然也可以不处理异常、通过关键字throws继续传递异常。注:没有try块、catch不能单独存在。Finally块永远都执行、除非你在catch块中退出系统(System.exit(0)),try块中只有return并不能终止finally块的执行。RuntimeException的任何子类都无需再throws子句中声明。
异常传递:当我们不对产生的异常做任何处理、那么这个异常何去啊?它会向它的调用者传递这个异常。
方法调用栈:在程序中、没有说一个方法就像全部的东西的实现、而是充分的独立、一个方法处理一件事情、那么如果我有一个方法、需要使用另一个方法的处理结果、那么我没就在这个方法中调用另一个方法(如何调用?自己想)、这就是方法调用栈、通过这个“栈“,我们就知道它是什么特性了(后进先出)、
问:如果产生一个异常、不对进行任何处理、这个异常最终会抛向哪里?
解析:通过上面的提示、知道方法调用栈的存在、那么这个异常的产生肯定是在在方法调用栈的栈顶的那个方法、当然我们在看控制台抛出的是异常栈、如果我们不对其进行处理、那么它会继续向下抛(栈的特性)、一次都不对其处理、最后会抛到这个栈的栈底、就是程序的起始位置、那么一个java程序的入口地址是哪里呢?main方法、对、就是这、
问:那如果是J2EE应用呢?异常抛向哪里?前提也是不对其进行任何处理。
求解!
挺有意思的文章:http://www.iteye.com/topic/765287
透过JVM看Exception的本质:http://www.iteye.com/topic/857722
J2EE项目异常处理:http://www.iteye.com/topic/72170