java 异常处理

异常处理

异常指程序在运行过程中发生在正常情况以外的事件,如用户输入错误,除数为0,找不到文件等

异常处理指对程序运行过程中产生的异常情况进行恰当处理的技术,能增加程序的灵活性,可读性,可靠性

异常处理的作用:

1.定义异常的位置

2.绕开程序的异常,不让异常执行,使程序可以继续执行

异常处理方式

java语言处理异常有两种方式

1.利用try-catch-finally语句处理异常,优点是分开了处理异常代码与程序正常代码,增强了程序的可读性,减少中途终止程序运行可能带来的危害

2.由java异常处理机制预设方式处理,一旦程序发生异常,停止执行程序并显示一些错误信息给用户,即使用throws关键字,将异常交由上级处理,可以理解为原方法无法处理异常,将异常甩给上级处理,即为甩锅

java异常类型

1.Error子类代表Java系统内部错误,这类异常属于不受检查异常

2.RuntimeException子类代表运行异常,是程序运行过程中产生的错误,程序员通过调试修复他们,这类异常也属于不受检查异常

3.其他子类如IOException、SQLException、FileNotFoundException,他们的特点是程序运行前Java编译器会检查他们,如果程序中可能出现这类异常,程序员需要用异常处理语句try-catch-finally语句捕获或用throws子句抛出,否则无法通过编译

常见的两种异常类型:

运行时异常(不受检查异常)无需对代码进行提前处理:

ArrayIndexOutOfBoundsException数组下标越界异常
NullPointerException空指针访问异常
NumberFormatException数字格式化异常
ArithmeticException算术异常,如除以0
ClassCastException类型转换不匹配异常

编译时异常(受检查异常)在写代码时,对可能存在的异常进行提前处理:

SQLException数据库访问异常
IOException文件操作异常
FileNotFoundException文件不存在异常
ClassNotFoundException没有发现类异常

异常的发生都处于代码运行时,直接继承Exception类的异常都为编译时异常,直接继承RuntimeException类的异常都为运行时异常

package nt.Yichang.com;
class AlcoholException extends Exception{
    public AlcoholException(){}
    public AlcoholException(String msg){
        super(msg);
    }
}
class Check{
    public static double alcoholContent;
    public static void drunkDrivinng()throws AlcoholException{
        if (alcoholContent>80)
            throw new AlcoholException("醉驾!需要处罚");
        else if (alcoholContent>=20) {
            throw new AlcoholException("酒驾!需要处罚");
        }
        else{
            System.out.println("一切正常");
        }
    }
}
public class YIchang {
    public static void main(String[] args) {
        Check.alcoholContent = 90;
        try{
            Check.drunkDrivinng();
        }
        catch (AlcoholException a){
            System.out.println("酒精含量:"+Check.alcoholContent);
        }
        finally {
            System.out.println("检查结束,谢谢配合");
        }
    }
}

 异常处理的方法一般有两种:

try-catch-finally语句处理和预设方式处理

try-catch-finally语句处理,通过try语句对自身语句块进行检测,若运行正常,则不在执行catch语句,最后执行finally,若发生异常,则由catch语句对try语句内的异常进行捕捉,执行catch语句内的方法块,最后在执行finally语句

public class YICHANG {
    public static void main(String[] args){
        int rank[] = {1,2,3,4,5};
        int i = 10;
        int x;
        try{
            x = rank[i];
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("编译异常!");
            e.printStackTrace();
        }finally {
            System.out.println("运行结束");
        }
    }
}

利用java异常处理机制,能保证程序在出现异常情况下仍然能完成其他处理

预设方法处理:

把异常对象上交给调用该方法的上级方法

在java中,如果不知道在方法如何处理出现的异常对象,可在定义该方法时使用throws抛出该异常,把该异常交给上级调用者处理

【修饰符】 返回值类型 方法名(参数列表) throws 异常类A【,异常类B,……,异常类N】{

             //方法体

}

throws能抛出方法可能产生的多个异常

未完待续……

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值