点我

概述

什么是异常

异常表示程序出现的问题

  • 异常是代码在编译或者执行的过程中可能出现的问题
异常的体系

image-20240328225401608

Error:表示系统级别的错误

Exception:异常,表示程序可能出现了某种问题,所以,程序员通常会用exception以及它们的子类来封装程序出现的问题

异常分类
  • 运行时的异常:RuntimeException及其子类,编译阶段不会出现错误提醒,运行时才会出现的异常,例如:数组索引越界异常
  • 编译时异常:编译阶段就会出现的错误提醒,例如:日期解析异常

抛出&捕获异常

抛出异常(throws)
  • 在方法名前面使用throws关键字,可以将方法内部出现的异常抛出去给调用者处理
方法名 throws 异常1,异常2,...{
    ......
}
捕获异常(try...catch)
  • 直接捕获程序出现的异常
try{
    监视可能出现异常的代码
}catch(异常类型1 变量){
    处理异常的代码
}catch(异常类型2 变量){
    处理异常的代码
}
异常的作用
  • 异常是用来查询系统BUG的关键参考信息
  • 异常可以作为方法内部的一种特殊返回值,以便通知上层调用者底层的执行情况

自定义异常

Java无法为这个世界上全部的问题都提供异常类来代表, 如果企业自己的某种问题,想通过异常来表示,以便用异常来管理该问题,那就需要自己来定义异常类

image-20240328230739691

自定义异常的种类

自定义运行时异常

  • 定义一个异常类继承RuntimeException
  • 重写构造器
  • 通过throw new 异常类(xxx)来创建异常对象并抛出

注意:编译阶段不报错,提醒不强烈,运行时才可能出现!!

自定义编译时异常

  • 定义一个异常类继承Exception
  • 重写构造器
  • 通过throw new 异常类(xxx)来创建异常对象并抛出

注意:编译阶段就报错,提醒更加强烈

demo

package com.xbxaq.exception_;

public class Test {
    public static void main(String[] args) {
        try {
            saveAge(179);
        } catch (Exception e) {
           e.printStackTrace();
            System.out.println("BUG");

        }
    }
    public static void saveAge(int age) throws AgeRuntimeException {
        if(age > 0 && age < 150){
            System.out.println("年龄成功被保存");
        }else {
            throw  new AgeRuntimeException("/age is illegal,your age is " + age);
        }
    }
}

package com.xbxaq.exception_;

public class AgeRuntimeException extends Exception{
    public AgeRuntimeException() {
    }

    public AgeRuntimeException(String message) {
        super(message);
    }
}

image-20240328234800374

异常的常见处理方式

常见方式
  • 捕获异常,记录异常并响应合适的信息给用户
  • 捕获异常,尝试重新修复

在开发中异常的常见处理方式是:底层的异常抛出去给最外层,最外层集中捕获处理

抛出异常

在方法名上使用throws关键字,可以将方法内部出现的异常抛出去给调用者处理

方法名 throws 异常1,异常2,...{
    ......
}

例如:
方法名 throws Exception{......}
// Exception代表可以捕获一切异常
捕获异常(try...catch)
  • 直接捕获程序出现的异常
try{
    监视可能出现异常的代码
}catch(异常类型1 变量){
    处理异常的代码
}catch(异常类型2 变量){
    处理异常的代码
}


例如:
try{ 
    // 可能出现异常的代码!
}catch (Exception e){
    e.printStackTrace(); // 直接打印异常对象的信息}
// Exception代表可以捕获一切异常
分类: JAVA

评论

-- 评论已关闭 --

目录