4月19日学习总结 ——— 异常

异常

1.程序中的异常

弊端  1.代码臃肿  2.程序员花很多时间调漏洞 3.程序员很难堵住漏洞

2 .异常处理机制(5个关键字)

(1)try         执行可能产生异常的代码

(2)catch     捕获异常
(3)finally  论是否发生异常,代码总能执行  注:只有一种方法例外,若前面代码中有system.exit(1)的话,finally将不会被执行
(4)throws   声明方法可能要抛出的各种异常
(5)throw     手动抛出异常
  注:Exception        是所有异常的父类,所有的类的父类是Object

try---catch 或者  try---catch---finally   或者 try---finally  

try{ 代码段   //可能会产生异常的代码段 }
catch(异常类型e//例 exception e){对异常类型处理的代码段 e.exception()//打印异常堆栈信息 }  //代码段  System.err.println();输出的字体颜色为红色
try代码里没有出现异常,则不走catch代码段,执行catch段下面的代码段

例:

               try {
// 若try内的代码不存在异常,那么不会再走catch,会直接往下走,到finally
                        // 可以同时有多个catch语句
                        //多重catch的判断与switch相似,若匹配到一个错误类型则不执行其他catch
                        // 若出现的错误与catch内的错误不匹配,程序也会直接出错中断
} catch ( NullPointerException e) {         // e代表变量名,后续代表打印异常堆栈的信息
e.getMessage();                    //打印异常信息字符串,非所有异常提示有错误提示
                             System.err.println("程序出现错误操作");     //错误信息的输出提示err
                        // 若有此处有return,也会先执行finally的代码后再return
                        // 若此处有system.exit(1) 就不会执行finally了。程序就直接结束

}catch (Exception e) {
                        //需要注意在有多个catch的时候不能出现先首个catch中是父类Exception在判断必须先子类后父类
e.getStackTrace()         //打印异常堆栈的信息
}finally{
                              System.out.println("程序结束");

}
自定义异常:通过创建一个普通类继承Exception

       public class TextException extends Exception{
                    public TextException(){}
                    public TextException(String message){
            super(message);
}
}

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.需要对捕获的异常做处理

猜你喜欢

转载自blog.csdn.net/chenjingqi101/article/details/80005895