在程序运行过程中出现错误时,异常处理可以保证出现错误后,控制接下来的程序流程来操作,是选择定位错误信息,还是抛出异常,捕获异常、还是避免程序非正常退出,都取决于我们的操作。
Java异常关键字
• try – 用于将可能发生错误的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生错误时,异常则被抛出。
• catch – 用于捕获异常。catch用来捕获try语句块中发生的异常,并在catch语句块写出解决方案。
• finally – finally语句块是必然执行的异常统一出口。只有finally块执行完成之后,才会返回来执行try或catch块中的return或throw语句。只有在程序退出或关闭的情况下,不执行finally。
• throw – 用于抛出异常。
• throws – 用于声明该方法可能抛出的异常。
异常类Exception:
IOException有:
EOFException文件已结束异常;
FileNotFoundException文件未找到异常。
ReflectiveOperationException有:
ClassNotFoundException找不到类异常;
NoSuchMethodException方法未找到异常;
NoSuchFieldException找不到属性异常。
RuntimeException有:
IndexOutOfBoundsException索引越界异常;
ArrayIndexOutOfBoundsException数组索引越界异常;
ArithmeticException算数条件异常;
NullPointerException空指针异常;
NegativeArraySizeException数组长度为负异常;
ArrayStoreException数组存储异常;
SecurityException违背安全原则异常;
IllegalArgumentException非法参数异常;
ClassCastException类型强制转换异常。
错误类Error:
JVM发出的错误操作,是代码无法操作的,无法使用catch块来捕捉Error,不能在throws子句中声明该方法可能抛出Error及其任何子类。
try...catch用法
try{
可能发生异常的代码
}
catch(Exception e){
解决方案
}
finally{//必然执行的异常统一出口
}
throw用法
public void SetAge(int age) throws AgeException{
if(age<0||age>120){
AgeException e= new AgeException("不合理");
throw e;
} else{
this.age=age;
}
}