JAVA小白的崛起之路(四)异常机制

JAVA小白的崛起之路(四)异常机制

异常

概念:异常(Exception) 即例外,程序没有按自己预想的结果运行出来,出现了非正常情 况,即“程序得病了”

Java异常类是Java提供的用于处理程序中错误的一种机制。设计良好的程序应该在 异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或发生 不可预见的结果。
Java程序的执行过程中如出现例外事件,可以生成一个异常类对象,该异常对象封 装了例外事件的信息并将被提交给Java运行时系统,这个过程称为抛出( throw )异 常。
当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常 对象交给其处理,这一过程称为捕获(catch)异常。

分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g7Kqe7Vf-1604930576036)((四)]异常机制.assets/FB63{D_C_JRAKGRGHF@YWJA.png)

Exception:所有异常的父类,其子类对应了各种各样可能出现的异常事件,一般需 要用户显示地声明或捕获。

Runtime Exception

Runtime Exception类是 Exception 类的子类,叫做运行时异常,Java 中的所有运行 时异常都会直接或者间接地继承自 RuntimeException 类。

CheckedException(需要处理的)

Java 中凡是继承自 Exception,而不继承自 RuntimeException 类的异常都是非运行 时异常,也叫检查时异常。

处理异常

对于编译(非运行)时异常( checked exception ),必须要对其进行处理,否则无 法通过编译。处理方式有两种:

  • 异常捕获
  • 异常抛出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92yCzkrE-1604930576042)((四)]异常机制.assets/A%8ZNIU65GK19F]Y`XJ0H.png)

  • try代码段包含可能产生例外的代码
  • try代码段后跟有一个或多个catch代码段
  • 每个catch代码段声明其能处理的一种特定类型的异常,进行捕获并提供处 理的方法
  • 当异常发生时,程序会中止当前的流程,根据获取异常的类型去执行相应 的catch代码段
  • 一个 try 后面可以跟多个 catch,但不管多少个, 最多只会有一个catch 块被 执行。
  • catch捕获异常需要从小到大捕获(先子类再父类)
  • finally段的代码无论是否发生异常都有执行
自定义异常

步骤

使用自定义异常一般有如下步骤:

  1. 通过继承java.lang.Exception类声明自己的异常类
  2. 在方法适当的位置生成自定义异常的实例,并用throw语句抛出
  3. 在方法声明部分用throws语句声明该方法可能抛出的异常
public class RegisterException extends RuntimeException{
    public RegisterException(){
        super();
    }
    public RegisterException(String message){
        super(message);
    }
}

Exception: 所有异常的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显示地声明或捕获。

自己编写异常代码:

/**
 * 我自己的异常,自定义的一个检查时异常
 *  "我错了"
 *1、有了异常类
 * 2、找一个适当的时机出现异常
 * 3、抛出
 */
public class MyException extends Exception{
    public MyException(String message){
        super(message);
    }
}
public class ExceptionDemo004 {
    public static void main(String[] args)throws MyException {
        try{
            testException("我错了");
            System.out.println("try当中异常后面的代码");
        }catch (MyException e){
            System.out.println("出异常了");
            System.out.println(e.getMessage());
        }finally {
            System.out.println("不管有没有异常都会执行的代码");
        }
//        testException("我错了");
        System.out.println("处理之后的代码");

    }

    public static void testException(String msg)throws MyException{
        if("我错了".equals(msg)){
            // 出异常的地方法
            throw new MyException("出现了敏感词汇");
        }
        System.out.println("正常代码");
    }
}
      throw new MyException("出现了敏感词汇");
    }
    System.out.println("正常代码");
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值