异常知识点总结

一.异常处理机制的结构

Exception分为编译时异常和运行时异常

1.编译时异常(写代码时候就需要处理的异常):程序正确,但因为外在的环境条件不满足引发。

2.运行时异常(代码运行时候抛出的异常):程序存在bug,要更改程序来避免。

二.异常的处理

1.try-catch:捕获这个异常,自己处理了这个异常

try {
     需要检查的代码(可能会抛出异常,也可能不会抛出异常)
} catch(异常的类型   异常类型的变量) {
    捕获异常后要处理异常
} finally {
    一定会被执行的代码(不管异常抛不抛出都会执行)
}

2.throws:抛出异常,我不处理这个异常,抛出异常

//抛出编译时异常,谁调用我谁去处理
public void show() throws ClassNotFoundException {
    Class.forName("com.mysql.jdbc.Driver");
}

throws是在方法签名上

throw是在代码中抛出异常

三.多重捕获块

try {
    需要检测的代码(可能会抛出异常,也可能不会抛出异常)
} catch (异常的类型1 异常类型的变量1) {
     捕获异常后处理异常
} catch (异常的类型2 异常类型的变量2) {
     捕获异常后处理异常
} catch (异常的类型3 异常类型的变量3) {
     捕获异常后处理异常
} finally {
     一定会被执行的代码(不管异常抛不抛出都会执行,例如数据库释放连接)
}

注:越往下层catch,其异常包含的范围越广

四.自定义异常

要求:

1、所有的异常的都是Throwable的子类

2、如果写一个运行时异常,需要继承RuntimeException

3、如果要写一个编译时异常,继承Exception


public class MeiQianException extends Exception{

    //message代表抛出这个异常要打印的错误信息
    public MeiQianException(String message) {
        super(message);
    }
}

@Test
public void test22() {
    try {
        quQian(1900);
    } catch (MeiQianException e) {
        e.printStackTrace();
    }
}

public void quQian(double money) throws MeiQianException {
    if (money >= 1000) {
        throw new MeiQianException("钱不够");
    }
    System.out.println("钱够了");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值