欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础之异常

程序员文章站 2024-01-24 15:11:04
...

一、异常的继承关系:

Java基础之异常
Error:严重错误
Exception:编译异常,受检异常
|– RuntimeException:运行异常,非受检异常

二、编译异常及运行异常:

(1)编译异常:
1. 写上之后有红线
2. 要么try-catch处理
3. 要么throws甩锅

(2)运行异常:写上之后没有红线
1. 也可以try-catch处理
2. 也可以throws甩锅
3. 还可以不理它,默认也会throws甩锅

三、异常处理方式:

(1)throw关键字:
含义:主动抛出一个异常,搞事情。
格式:throw new 异常类(参数);
异常类 异常对象名 = new 异常类(参数);
throw 异常对象名;
(2)throws关键字:
含义:是一种修饰,代表本方法中出现了异常我不管,谁调用我谁管。
格式:修饰符 返回值类型 方法名称(参数类型 参数名称) throws 异常A, 异常B {…}
注:
1. 如果方法当中可能有多种异常,那么throws后面可以都写上,用逗号分隔。
2. 如果throws后面多个异常之间存在继承关系,那么只要写父类异常即可。但是都写上,也不算错。
3. 无论是编译异常还是运行异常,都可以写在throws后面。只是一般情况下运行异常不写也可以。
(3)try-catch语句:

try {

    } catch (A a) {

    }

try-catch-finally语句:

try {

    } catch (A a) {

    } finally {
        // 一定会被执行的语句
    }


1. 可以一个try后面多个catch语句,但是如果有继承,必须子类异常在前,父类异常在后。

try {

        } catch (A a) {

        } catch (B b) {

        }
2. 也可以一个catch语句中间多种异常,但是互相之间不能存在继承关系。
try {

        } catch (A | B | C ex) {

        }
3. 可以是try-catch,也可以try-catch-finally,还可以try-finally。但是不能只有try或者没有try。
4. 覆盖重写方法的时候,必须保证子类方法的throws异常范围***【小于等于】***父类范围。

四、java,lang.Throwable里三个常用方法:

public String getMessage():获取异常的“详细”(细节)信息。
public String toString():获取异常的“简短”(概要)信息。
public void printStackTrace():打印异常栈信息(异常的位置信息)。

:决不允许捕获了异常之后什么都不做,吞掉异常。

如何选择是try-catch呢,还是throws呢?

作为一个方法的编写者,我们要看当前方法一旦发生异常,还有没有必要继续运行下去?
(1)如果有了异常,方法还应该继续向下执行,那么就应该用try-catch。
(2)如果有了异常,方法就不应该继续了,应该中断崩溃,那么就应该使用throws。

五、自定义异常

  1. 定义一个类,并且继承一个已经存在的异常类。(认贼作父)
  2. 编写一个无参数的构造方法。
  3. 编写一个String参数的构造方法,并且调用super(String)
  4. 然后就可以当做普通的异常来用,抛出throw,甩锅throws,处理try-catch都可以。
相关标签: 异常