java第十三课(4.19) 异常

Java变成语言使用 异常处理机制为程序提供了错误处理的能力。

Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws 
try
: try{   } 在try在作用域内代表着执行可能产生异常的代码

catch: catch(错误类型 自定义名称){     } 捕获在try作用域内产生的异常代码,通过自定义名称点出其详细信息(自定义名称.getMessage()  .getStackTrace() ) 通过system.err.print();来显示出来,其中err代表着错误的意思,其输出的文字会变成红色。printStackTrace():输出异常的堆栈信息
finally
: finally{    }在finally作用域的代码,无论是否发生异常,都会执行只有一种方法例外,若前面代码中有system.exit(1)的话,finally将不会被执行。因为该命令是直接退出java虚拟机。(若前代码中return等语句,也会先执行finally作用域内的代码再执行return
这三个关键字必须try搭配catch 或者try搭配finally,不得单独出现。若三个关键字都在其执行顺序是try→catch→finally
例: try {
// 若try内的代码不存在异常,那么不会再走catch,会直接往下走,到finally
                        //可以同时有多个catch语句
                        //多重catch的判断与switch相似,若匹配到一个错误类型则不执行其他catch
                        //若出现的错误与catch内的错误不匹配,程序也会直接出错中断
} catch (ArrayIndexOutOfBoundsException e) {
e.getMessage();
                        //若有此处有return,也会先执行finally的代码后再return
                        //若此处有system.exit(1) 就不会执行finally了。程序就直接结束

}catch (Exception e) {
                        //需要注意在有多个catch的时候,不能出现先首个catch中是父类Exception在判断,必须先子后父
.getStackTrace()
}finally{


}

自定义异常:通过创建一个普通类继承 Exception
如:
public class  TextException extends Exception {
                     public TextException(){}
                     public TextException(String wenZi){
             super( wenZi );
}
}

throws:跟再类名后的关键字,其作用是声明各种可能要抛出的异常。
throw:在代码块内的关键字,其作用是手动抛出异常,跟throws是组合使用,只要用throw抛出一个异常,要么就地解决该异常,要么就用throws声明异常。 若出现异常必须自己手动解决,不能抛给java虚拟机

例: public static void main(String[] args) throws Exception {      
                                                                    //需要注意的是throws可以一次声明多个异常,但throw只能一次抛出一个异常
                    throw new Exception
("这里是可以输入文字的");
                       }   

异常类型 说明
Exception 异常层次结构的父类
ArithmeticException 算数错误情况,如以零作除数
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 尝试访问null对象成员
ClassNotFoundException 不能加载所需的类
IllegalArgumentException 方法接收到非法参数
ClassCastIllegalArgumentException 对象强制类型转换出错
NumberFormatIllegalArgumentException 数字格式转换异常,如把"abc"转换成数字

异常处理原则:
1.异常处理与性能
2.异常只能用于非正常情况
3.不要将过于庞大的代码块放在try中
4.在catch中指定具体的异常类型
5.需要对捕获的异常做处理

你可能感兴趣的:(学习)