1、异常处理指的是运行期出现的错误(如除0溢出,数组(字符串)下标越界),所要读取的文件不存在。良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。
补充知识:c和c++中不检查数组越界??如果程序员也没有自己处理数组越界,会存在缓冲区溢出的漏洞,这可能被黑客利用来更改保存现场时的程序地址,运行黑客程序。
2、Java程序执行过程中,如果出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程成为抛出(throw)异常;当Java运行时系统接收到异常对象时,会寻找能够处理这一异常的代码(try-catch),并把当前异常对象交给其处理,这一过程成为捕获(catch)异常;如果没有catch,那么系统自己按照默认方式处理(printStackTrace()方法,打印错误的堆栈信息)。
try里面是有可能出现异常的语句;try后面跟一个或多个catch,catch声明其能处理的一种特定类型的异常并提供处理的方法。
异常发生时,程序会终止当前流程,根据获取异常的类型区执行相应catch。
finally:无论try是否抛出异常,finally都要执行。通常进行资源清除(关闭打开的文件,删除临时文件。。。)
后面的语句如果还有try还会执行。。。
5、异常的概念
6、异常的分类:Throwable是异常的根类。其中,Error类是系统错误(虚拟机错误),我们处理不了的异常;Exception是所有异常类的父类,我们能够处理的,可以catch。Exception中的RuntimeException是经常出现的错误(如a/b,数组越界等),这种错误系统可以自动检测并处理,可以catch,也可以不catch;其他错误(如IO错误等)必须catch(常见的是JDK中的类方法中写了throws的Exception)。