主要内容:
1.Java异常处理基础
2.“受控(checked)”的异常
3.自定义异常与异常处理链
异常 (Exception):发生于程序执行期间,表明出现了一个非法的运行状况。许多JDK中的方法在检测到非法情况时,都会抛出一个异常对象。
例如:数组越界和被0除。
异常处理的目的是依据实际情况提供不同的错误应对策略与手段,使程序更稳定,更安全。
异常处理的主要用途是提供准确的错误消息,解释失败的原因、位置和错误类型等,同时提供一定的恢复能力,尽可能地保证数据完整性不被破坏,并让程序能继续运行。
Java中的异常捕获语句
Try{
//可能发生运行错误的代码;
}
catch(异常类型 异常对象引用){
//用于处理异常的代码
}
finally{
//用于“善后” 的代码
}
Java 中所有可捕获的异常都派生自 Exception 类
使用Java异常处理机制
把可能会发生错误的代码放进try语句块中。
当程序检测到出现了一个错误时会抛出一个异常对象。
异常处理代码会捕获并处理这个错误。 catch语句块中的代码用于处理错误。
当异常发生时,程序控制流程由try语句块跳转到catch语句块。
不管是否有异常发生,finally语句块中的语句始终保证被执行。 如果没有提供合适的异常处理代码,JVM将会结束掉整个应用程序。
Java中的异常分类
Throwable类有两个直接子类:
Exception:出现的问题是可以被捕获的;
Error:系统错误,通常由JVM处理。
可捕获的异常又可以分为两类:
(1)Check异常:直接派生自Exception的异常类,必须被捕获或再次声明抛出
(2)Runtime异常:派生自RuntimeException的异常类。使用throw语句可以随时抛出这种异常对象: throw new ArithmeticException(…);
异常的“多态”特性
可以有多个catch语句块,每个代码块捕获一种异常。
在某个try块后有两个不同的catch 块捕获两个相同类型的异常是语法错误。
使用catch语句,只能捕获Exception类及其子类的对象。
因此,一个捕获Exception对象的catch语句块可以捕获所有“可捕获”的异常。
将catch(Exception e)放在别的catch块前面会使这些catch块都不执行,因此Java不会编译这个程序。
throws语句
throws语句表明某方法中可能出现某种(或多种)异常,但它自己不能处理这些异常,而需要由调用者来处理。
当一个方法包含throws子句时,需要在调用此方法的代码中使用try/catch/finally进行捕获,或者是重新对其进行声明,否则编译时报错。
受控与不受控的异常
throws语句中声明的异常称为受控(checked)的异常,通常直接派生自Exception类。 RuntimeException(其基类为Exception) 和Error(基类为Throwable)称为非受控的异常。
这种异常不用在throws语句中声明。 CheckedExceptionDemo.java示例展示了上述两种异常的特性。
标签:总结,语句,Exception,处理,捕获,第五,课后,catch,异常 From: https://www.cnblogs.com/sion6/p/16857612.html