自定义Exception类

自定义异常

/*

  • 自定义异常的三步骤
  • 1.定义:一般是继承Exception,重写构造
  • 2.设置:将该异常设置在某段代码中,复合条件则抛出
  • 3.触发:调用设置了异常的代码,符合条件则触发异常
    */
    先定义两个自定义异常:年龄异常 取款异常

AgeIllegalException

package SE02.n1Exception;
public class AgeIllegalException extends Exception{//年龄非法异常
	public AgeIllegalException() {
		super();
		// TODO 自动生成的构造函数存根
	}
	public AgeIllegalException(String message) {
		super(message);
//		System.out.println(message);
		// TODO 自动生成的构造函数存根
	}
}

BalanceNotEnoughException

package SE02.n1Exception;

public class BalanceNotEnoughException extends RuntimeException{

	public BalanceNotEnoughException() {
		super();
		// TODO 自动生成的构造函数存根
	}

	public BalanceNotEnoughException(String message) {
		super(message);
		// TODO 自动生成的构造函数存根
	}
	
}

注意:BalanceNotEnoughException我继承的是RuntimeException,这是Exception的一个子类
先介绍一下这个子类

RuntimeException

RuntimeException:运行时异常,这种异常我们不需要处理,完全由虚拟机接管。比如我们常见的NullPointerException,我们在写程序时不会进行catch或throw。

再写一个Person类并植入异常

package SE02.n1Exception;

public class Person {
	int age=0;
	int balance=1000000;
	@Override
	public String toString() {
		return "Person [age=" + age + "]";
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) throws AgeIllegalException {
		if(age>10000||age<0) {
			throw new AgeIllegalException("年龄非法");
		}
		this.age = age;
	}
	public void deposit(int money) {
		balance+=money;
	}
	public void withDraw(int money) {
		if(balance-money<0) {
			throw new BalanceNotEnoughException("钱不够");
			//可以看到在抛出本异常的时候,编译器并没有提示我们要抛出异常
		}
		balance-=money;
	}
}

Test类

package SE02.n1Exception;

public class Demo04 {

	public static void main(String[] args){

		Person p = new Person();
		try {
			p.setAge(1000000);//触发AgeIllegalException
		} catch (AgeIllegalException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
		p.withDraw(1000000000);//触发balanceNotEnoughException
	}
}

运行结果: SE02.n1Exception.AgeIllegalException: 年龄非法
at SE02.n1Exception.Person.setAge(Person.java:17)
at SE02.n1Exception.Demo04.main(Demo04.java:15)
Exception in thread “main” SE02.n1Exception.BalanceNotEnoughException: 钱不够
at SE02.n1Exception.Person.withDraw(Person.java:26)
at SE02.n1Exception.Demo04.main(Demo04.java:21)

总结:自定义异常还是比较简单的,新建一个自定义异常类,选择继承异常种类,再重写构造函数。然后在需要抛出异常的地方做判断,植入异常,具体语句:throw new xxxxxxException()

©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值