异常

异常

认识异常

异常是代码在编译或者执行的过程中可能出现的错误

1.运行时异常

int[] arr ={1,2,3,4}

//System.out.println(arr[3]);出现索引越界异常

String name = null;
System.out.println(name.length); //空指针异常

2.编译时异常

代码写完就会出现的错误。(在于提醒程序员,你的代码在这里很容易出现编译异常)

STring s = "2023-11-11 11:11:10";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse(s);
System.out.println(d);

throws 抛出异常

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

try...catch捕获异常

直接捕获程序出现的异常

异常的作用

异常是用来查询系统Bug的关键参考信息

异常可用作为方法内部的一种特殊返回值,以便通知上层调用者底层的执行情况

  //理解异常的作用
        System.out.println("开始=========");
        try {
            divde(10, 0);
            System.out.println("程序执行成功了!");
        } catch (Exception e) {
            System.out.println("程序出现了bug");
        }
        System.out.println("结束");
    }

    private static void divde(int a, int b) {
        if (b == 0) {
            //手动抛出异常作为方法的返回值,通知上层的调用者
            throw new RuntimeException("/ b 不能为 0 ");
        }
        int c = a / b;
        System.out.println("结果是:" + c);

    }

自定义异常

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

自定义异常的分类

自定义运行时异常

定义一个异常类继承RuntimeException

重写构造器

通过throw new 异常类(xxx)来创建异常对象并抛出

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

自定义编译时异常

定义一个异常类Exception

重写构造器

通过throw new 异常类(xxx)创建异常对象并抛出

编译阶段就报错,提醒更加强烈!!

//自定义异常
public class ItheimaAgeIllegalException extends Exception {
    public ItheimaAgeIllegalException() {
    }

    public ItheimaAgeIllegalException(String message) {
        super(message);
    }
}
  public static void main(String[] args) {
        //掌握自定义异常的定义
        System.out.println("开始");
        try {
            saveAge(234);
        } catch (Exception e) {
            e.printStackTrace();//打印异常信息出来
        }
        System.out.println("结束");
    }

    public static void saveAge(int age) throws ItheimaAgeIllegalException {
        if (age <= 0 || age > 150) {
            //出现问题:用异常表示,年龄非法异常
            //throw:从方法内部抛出一个异常对象,通知调用我的方法
            throw new ItheimaAgeIllegalException("/age");
        } else {
            System.out.println("成功保存您的年龄:" + age);
        }
    }
posted @ 2023-11-12 22:17  奕帆卷卷  阅读(19)  评论(0)    收藏  举报