------- android培训、java培训、期待与您交流! ----------
一.基本概念
1. Java把程序不能正常运行的情况分为两种:一种是异常(Exception),一种是错误(Error)。异常和错误都是Throwable类的直接子类。
-----错误(Error):一般是指java虚拟机相关的问题,如系统崩溃、虚拟机出错误、动态链接失败等,这种错误无法恢复或不可能捕获,将导致应用程序中断,通常应用程序无法处理这些错误,因此应用程序不应该捕获Error对象,也无须在其throws子句中声明该方法抛出任何Error或其子类。
------异常 (Exception):应用程序能处理的,程序在编译时或运行时遇到的不正常情况。
2.Java异常的处理
-------抛出 在定义一个方法来封装功能代码时,如果功能代码可能会发生异常,须在方法定义时在参数体之后,方法体之前使用throws关键字来什么声明,代码可能发生的异常的类型。
-------捕获
3.Java异常的分类
--------编译时异常(Checked) 编译时发生的异常,必须处理,否则无法通过编译
--------运行时异常(Runtime) 可以不处理,但会影响程序的运行,所以一般都会对其进行处理。
4.Java异常处理相关的五个关键字try、catch、finally、throw、throws。
-----try:try代码块用来放置可能引发异常的代码。try代码块中某一句代码发生了异常,try代码块中这一句后的代码都不会执行。Java虚拟机就会创建对应的异常对象,与catch圆括号中声明的异常类型进行匹配,匹配成功就执行后面对应的catch代码块中的代码。
--------catch:catch圆括号中用来声明要捕获的异常类型, catch代码块中放置处理异常的代码。
--------finally:不管发生异常与否,finally代码块中的代码都会被执行。
---------throw:用于抛出一个实际的异常,可以单独作为语句使用,抛出一个具体的异常对象。
-----------throws:在方法定义是用来声明可能抛出的异常。
二.多异常处理
1. 声明异常时,建议声明更为具体的异常。这样处理的可以更具体
2.catch里面应该有针对性的异常处理,不要把一切交给父异常Exception处理。甚至不使用,出错了就停止程序,我们去处理程序。为了代码的严谨性。
3. 在调用某方法是,方法声明了几个异常,就对应有几个catch块,如果多个catch块中的异常出现继承关系,父类异常catch块放在最下面,不要定义多余的catch块。
建议在进行catch处理时,catch中一定要定义具体处理方式。不要简单定义一句 e.printSrackTrace(),也不要简单的就书写一条输出语句。在实际开发中根据实际情况对异常进行处理。