java异常处理06_异常补充

1.方法重写中的异常

原则:子类声明的异常范围不能超过父类声明范围。

  • 父类方法没有声明异常,则子类重写方法也不能声明异常。
class Parent {
	public void show(){}
}
class Child extends Parent {
	public void show() throws Exception {} // 编译错误
}
  • 如果父类抛出一个异常,那么子类只能声明父类的异常或该异常的子类。
class AAException extends Exception {}
class BBException extends AAException {}
class Parent {
	public void show() throws AAException {}
}
class Child extends Parent {
	// public void show() {} // 不声明异常,编译通过
	// 声明父类方法异常的父类,编译错误
	// public void show() throws Exception {} 
	// 声明与父类方法相同的异常或该异常的子类,编译通过
	// public void show() throws AAException {}// 编译通过
	public void show() throws BBException {}// 编译通过
	// 子类声明的异常可以有多个,但是都必须是父类方法相同的异常或该异常的子类
	public void show() throws BBException, AAException {}// 编译通过
}

2.异常链

异常需要封装,但是仅仅封装还是不够的,还需要传递异常。一个系统的友好型的标识,友好的界面功能是一方面,另一方面就是系统出现非预期的情况的处理方式了。

有时候我们会捕获一个异常后再抛出另一个异常,这就形成了一个异常链。

【示例】异常链案例

// 自定义异常
class DenominatorZeroException extends Exception {
	public DenominatorZeroException() {}
	public DenominatorZeroException(String msg) {
		super(msg);
	}
}
// 计算器类
class Calculator {
	// 除法运算
public static int division(int num, int den) throws DenominatorZeroException {
		int result = 0;
		try {
			result = num/den;
		}
		catch(ArithmeticException e) {
			// 抛出一个更详细的异常
			throw new DenominatorZeroException("分母不能为0");
		}
		return result;
	}
}
public class ExceptionTest07 {
	public static void main(String[] args) {
		try {
			// 两个数做除法运算,可以会发生算数异常
			Calculator.division(5, 0);
		} catch (DenominatorZeroException e) {
			e.printStackTrace();
		}
	}
}

ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值