java基础——异常(三)

前两次博文介绍了异常的基本概况以及处理异常的方式,这一篇博文介绍自定义异常。
一,自定义异常的定义
通过阅读异常源代码:发现java中所有的异常类,都是继承Throwable,或者继承Throwable的子类。这样该异常才可以被throw抛出。
说明这个异常体系具备一个特有的特性:可抛性:即可以被throw关键字操作。
并且查阅异常子类源码,发现每个异常中都调用了父类的构造方法,把异常描述信息传递给了父类,让父类帮我们进行异常信息的封装。
例如NullPointerException异常类源代码:

public class NullPointerException extends RuntimeException {
    public NullPointerException() {
        super();//调用父类构造方法
    }
    public NullPointerException(String s) {
        super(s);//调用父类具有异常信息的构造方法
    }
}

照葫芦画瓢,我们可以自己定义一个类似的异常,语法如下:

Class 异常名 extends Exception{ //或继承RuntimeException
	public 异常名(){
}
	public 异常名(String s){ 
super(s); 
}
}

二,自定义异常的一个例子
定义Person类,包含age成员变量。
在Person类的有参数构造方法中,进行年龄范围的判断,若年龄为负数,则抛出AgeException异常,异常提示信息“年龄不能为负值”。
自定义异常类

/*
 * 如果自定义异常继承 RuntimeException 说明该异常为运行时异常
 * 如果自定义异常继承Exception 说明该异常是编译时异常
 */
public class AgeException extends RuntimeException{
	public AgeException(){
		
	}
	public AgeException(String str){
 		super(str);//交给父类处理,最终给的给Throwable
	}

}

Person类

public class Person {
	private int age;

	public Person(int age) {
		super();
		if(age<0){
		  //抛出一个自定义异常对象
		//使用自定义异常为了见名知义:例如看到我们自定义异常AgeException
	    //就知道问题的产生跟年龄有关
		  throw new AgeException("年龄不能为负值");
		}
		this.age = age;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		if(age<0){
			  //抛出一个自定义异常对象
			  throw new AgeException();
		}
		this.age = age;
	}

}

测试类
public class Demo13 {
	public static void main(String[] args) {
      Person p=new Person(-1);
      p.setAge(-3);
      System.out.println(p.getAge());
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值