6.异常

异常

实际工作中,遇到的情况不可能是非常完美的。比如:写的某个模块,用户输入不符合你的要求,打开某个文件但格式不对等。

异常:Exception

异常指程序运行中出现的不期而至的各种状况

异常发生在程序运行期间,它影响了正常的程序执行流程


三种类型的异常

1.检查性异常:最具有代表性的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如打开一个不存在文件时,一个异常就发生了,这些异常在编译器时不能被简单忽略。

2.运行时异常:运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。

3.错误Error:错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,他们在编译也检查不到的。


异常处理框架

Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类


Exception

Exception分支中有一个重要的子类:RuntimeException(运行时异常)

1.ArrayIndexOutOfBoundsException(数组下标越界)
2.NullPointerException(空指针异常)
3.ArithmeticException(算数异常)
4.MissingResourceException(丢失资源)
5.ClassNotFoundException(找不到类)

这些异常不是检查异常,程序中可以选择捕获处理,也可以不处理

这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这些类异常的发生

异常处理机制

1.抛出异常

2.捕获异常

异常处理五个关键字:
try:尝试处理

catch:捕获,有try一般就会有catch

finally:无论有没有异常,都会执行。善后工作

throw、throws:主动抛出异常,用在方法中

可以使用catch捕获多个异常,但顺序要从小到大

快捷键:Ctrl + Alt +T

自定义异常

//自定义的异常类
public class MyException extends Exception{
    //传递数字,大于10抛出异常
    private int detail;
    public MyException( int a) {
        this.detail = a;
    }
    //toString:异常的打印信息
    @Override
    public String toString() {
        return "MyException{" + "detail=" + detail + '}';
    }
}

使用自定义的异常

public class TestMyException {
    //可能会存在异常的方法
    static void ji(int a) throws MyException{       //1.首先调用方法,接受参数11
        System.out.println("传递的参数为:"+a);        //2.输出参数
        if (a>10){                                  //3.满足抛出异常条件,抛出异常
            throw new MyException(a);
        }
        System.out.println("OK");
    }
    public static void main(String[] args) {
        try {
            ji(11);
        } catch (MyException e) {                   //4.异常被捕获,执行捕获块内程序
            System.out.println("MyException=>"+e);
        }
    }
}
posted @ 2022-10-11 22:04  啦啦米老鼠  阅读(127)  评论(0)    收藏  举报