Java二章学习内容7(异常)

一.异常
概念:1.异常是指在程序运行过程中所发生的不正常事件,它会中断正在运行的程序
          2.java中所有异常都是
Exception(父类)               例如: ArithMeticException( 子类)
        3.异常通常通过5个关键字来实现的try(尝试正常运行可能出现异常)、catch(捕获异常)、finally(最终终于最后)、throw(声明并抛出异常)、throws(声明方法可能抛出的异常)
1.非异常机制解决方式 -      //解决提示出错后无法继续执行相应代码
in.hasNextInt();               //判断用户在控制台录入的是否为整数,如是为 true ,否为 false !!!
System.exit(1);                 //程序强制退出虚拟机,括号值里面如果非0就会退出程序
System.err.println("");     //修饰错误的形式输出语句

参考代码:

System.out.println("请输入除数:");
int num2=0;
if(in.hasNextInt() ){                                                    //判断用户在控制台录入的是否为整数,如是为true,否为false!!!
        //录入的是整数
    nun2=in.nextInt();
                if(num2==0){
                System.err.println("输入的除数是0,程序退出!");     //修饰错误的形式输出语句
                System.exit(1);                       //程序强制退出虚拟机,括号值里面如果非0就会退出程序                                          
                }else{
                System.out.println(num2+"感谢您使用本程序");
                }
}else{                              //录入的不是整数
        System.out.println("录入的输不是整数,程序退出");
        System.exit(1);           //程序强制退出虚拟机,括号值里面如果非0就会退出程序        
}

2.try-catch的应用

try         产生异常的对象可能会出现错误的代码块
catch        捕抓异常的类型根据类型进行捕抓错误信息,可以多个catch使用

e.printStackTrace();         //e代表变量名,后续代表打印异常堆栈的信息
e.getMessage();            //打印异常信息字符串,非所有异常提示有错误提示

参考代码:

try {
int num1=inpurt.nextInt();
        System.out.println("请输入除数");
int num2=inpurt.nextInt();
System.out.println(num1+"+"+num2+"="+num1/num2);
} catch (ArithmeticException e) {
System.err.println("程序出现错误操作");                      //错误信息的输出提示err
e.printStackTrace();                                                 //打印异常堆栈的信息
        syso(e.getMessage());                                        //打印异常信息字符串,非所有异常提示有错误提示
}
System.out.println("感谢使用本程序");

3.finally应用

1.在try-catch块后加入finally块的代码是否发生异常都会执行,如在System.exit(1)中断程序,就不会执行finally
2.存在return的try-catch-finally块中(先执行try----catch----finally----return
3.try-catch-finally 中try语句块是必须的,catch-finally其一均可!!!
参考代码:

try {
int num1=inpurt.nextInt();
        System.out.println("请输入除数");
int num2=inpurt.nextInt();
System.out.println(num1+"+"+num2+"="+num1/num2);
} catch (ArithmeticException e) {
System.err.println("程序出现错误操作");  
                   //错误信息的输出提示err
e.printStackTrace();                                                 //打印异常堆栈的信息
        syso(e.getMessage());                                        //打印异常信息字符串,非所有异常提示有错误提示
}finally{
    System.out.println("感谢使用本程序");                //是否发生异常都会执行
}

4.多重catch
排列catch语句的顺序:先子类后父类
发生异常时按顺序逐个匹配
只执行第一个与异常类型匹配的catch语句

参考代码:
try{
System.out.println("结果是:"+(num1/num2));
}catch (NullPointerException e) {
System.out.println("空指针异常");
}catch(ArithmeticException e){
e.printStackTrace();
System.out.println(e.getMessage());
System.out.println("算数错误异常");
}finally{
System.out.println("程序结束");
}

5.throw及throws

throw   throws
生成并抛出异常 声明方法内抛出了异常
位于方法体内部,可作为单独语言使用 必须跟在方法参数列表后面,不能单独使用
抛出一个异常对象,且只能是一个 声明抛出异常类型,可以跟多个异常
6.自义定异常
流程:定义异常类---编写构造方法,继承父类的实现----实例化自定义对象----使用throw抛出
继承 Exception
二.常见的异常类型
异常类型 说明
Exception 异常层次的父类
ArithmeticException 算数错误的情形,如:以零作被除数
ArrayIndexOutOfException 数组下标越界
NullPointerException 尝试访问Null对象成员
ClassNotFoundException 不能加载所需的类
IIlegalArgumentException 对象强制类型转换异常
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式转换异常,如:把“abc”转换成数字
   

猜你喜欢

转载自blog.csdn.net/jayvergil/article/details/79984886