Java异常2

一、throw / throws 抛出异常

通过学习try-catch-finally,我们知道自己来处理异常,但是有一些异常,在我们编写的这个方法中,不知道怎么处理,那怎么办呢?

大家换个思维想一想,我处理不了的异常,那就把这个异常抛给别人(也就是调用我这个方法)的来处理,这也有点想我们所说的推卸责任.那怎么抛出异常呢? 就使用我们的throw 来抛出异常,但是你抛出了异常,是不是要告诉调用者,说我这个方法可能会抛出那些异常呢?我们推卸了责任,那也要让背黑锅的人知道他背的是什么黑锅,不能做得太绝,是吧.那怎么在方法上声明可能抛出的异常呢,就使用throws.

语法:throw new 异常类型(异常信息);

eg: throw new Exception("抛个异常");

throw 作用:

1)返回异常结果;

2)结束方法;

throws 异常类型1,异常类型2

eg:

//定义一个除法的方法,并声明异常
	public int division(int num1 ,int num2) throws ArithmeticException{
		if(num2 == 0){
			//抛出异常,如果抛出异常,则抛出异常后面的代码不会执行
			throw new ArithmeticException("除数不能为0");
		}
		return num1/num2;
	}

异常常用方法

public String getMessage()   获取异常的信息
public void printStackTrace()  打印异常的栈跟踪信息

throws   在方法签名上, 表示这个方法可能会抛出什么类型的异常

throw 抛出的异常类型是RuntimeException类型或者子类,   这个方法可以使用throws 声明,也可以省略

​  throw 抛出的异常类型是编译异常,   这个方法一定使用throws 声明

二、异常信息分析与调试

异常信息会沿着方法调用的路径向回传递,直到我们程序的入口点main方法,像上面打印出的异常信息输出的层级结构;

方法调用:方法A方法B方法C(C方法中出现异常)

异常向上传递:main()方法A方法B方法C(C方法中出现异常)

三、自定义异常

在实际开发中, 根据项目的业务需求, 把某些情况定义为异常:

删除学生: 通过学号删除, 学号不存在作为一种异常来看, 但是jdk没有这个类型的异常

jdk允许我们程序员根据业务需求, 自定义一些异常类:

步骤:

1) 创建一个类(异常类取名: XxxException)

2) 让这个类继承Exception类(推荐),或者Exception子类

3) 根据Exception的构造方法生成自定义异常类的构造方法

/**
 * 学号不存在的异常
 *
 */
public class StuNoNotExistsException  extends Exception{
    public StuNoNotExistsException() {
    }

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

    public StuNoNotExistsException(String message, Throwable cause) {
        super(message, cause);
    }

    public StuNoNotExistsException(Throwable cause) {
        super(cause);
    }

    public StuNoNotExistsException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值