异常处理(程序健壮性→功能→性能)

异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况。许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象。
例如:数组越界和被0除。

try{
   //可能发生运行错误的代码;
  }
  catch(异常类型     异常对象引用){
   //用于处理异常的代码
  }
  finally{
   //用于“善后” 的代码
  }

①把可能会发生错误的代码放进try语句块中。
当程序检测到出现了一个错误时会抛出一个异常对象。异常处理代码会捕获并处理这个错误。

    catch语句块中的代码用于处理错误。

③当异常发生时,程序控制流程由try语句块跳转到catch语句块。
不管是否有异常发生,finally语句块中的语句始终保证被执行。
⑤如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。

异常的“多态”特性:

①可以有多个catch语句块,每个代码块捕获一种异常。在某个try块后有两个不同的catch 块捕获两个相同类型的异常是语法错误。
②使用catch语句,只能捕获Exception类及其子类的对象。因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。
③将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。

finally:

资源泄露:当一个资源不再被某应用程序使用,但此程序并未向系统声明不再使用此资源时发生这种情况。
②finally语句块主要用于解决资源泄露问题,它位于catch语句块之后,JVM保证它们一定执行。
③注意:finally语句块中也可能发生异常,如果这种情况发生,先前的异常被放弃。

④当有多个嵌套的try…catch…finally时,要特别注意finally的执行时机。
特别注意:
当有多层嵌套的finally时,异常在不同的层次抛出 ,在不同的位置抛出,可能会导致不同的finally语句块执行顺序。

THROWS语句:

①throws语句表明某方法中可能出现某种(或多种)异常,但它自己不能处理这些异常,而需要由调用者来处理。
②当一个方法包含throws子句时,需要在调用此方法的代码中使用try/catch/finally进行捕获,或者是重新对其进行声明,否则编译时报错。

③throws语句中声明的异常称为受控(checked)的异常,通常直接派生自Exception类。
④RuntimeException(其基类为Exception) 和Error(基类为Throwable)称为非受控的异常。这种异常不用在throws语句中声明。//程序声明

⑤一个子类的throws子句抛出的异常,不能是其基类同名方法抛出的异常对象的父类。//程序声明

Java 7 及以后的版本,允许在一个catch块中捕获多个异常。//程序

猜你喜欢

转载自www.cnblogs.com/sengzhao666/p/9941664.html