java自定义异常

在自定义异常时,应如何派生?必须在 Throwable 类层次结构中派生,否则将不能在应用程序中传播异常。另外,不能从 Throwable 直接派生。 Throwable 为两类主要问题 (Exception 和 Error) 提供行为基础,不能为这棵继承树定义新分支。一般也不要直接继承 Error 或其任何子类,因为自定义异常通常不符合错误标准 ( 即适当应用程序不应试图捕获的严重问题 ) 。
一般我们自己定义的异常分为检查型异常checked(编译时异常:Exception和它的子类)和 非检查型异常 non-checked(运行时异常:RuntimeException和它的子类)。
以下两个例子表明的区别是:除非派生一个非检测异常类 ( RuntimeException 或 Error) ,否则调用方法的任何对象随后将按照“处理或声明”规则解决该异常。
RuntimeException:
package baal.exception;

public class BaalException extends RuntimeException {

	 
	public BaalException() {
	}

	public BaalException(String message) {

		super(message);

	}
}
 
 
package baal.exception;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Tester tester=new Tester();
		 
			tester.getNo1("baal");
		 
	}

}
package baal.exception;

public class Tester {
	
	 

	public void getNo1(String a)  {
		if("baal".equals(a))throw new BaalException("String is baal");
	}

}

  

运行控制台信息:

Exception in thread "main" baal.exception.BaalException: String is baal
                                                          at baal.exception.Tester.getNo1(Tester.java:8)
                                                          at baal.exception.Main.main(Main.java:12

 

 

 

Exception:

 

 

package baal.exception;

public class BaalException extends  Exception {

	 
	public BaalException() {
	}

	public BaalException(String message) {

		super(message);

	}
}

 

 

package baal.exception;

public class Main {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Tester tester=new Tester();
		 
			try {
				tester.getNo1("baal");
			} catch (BaalException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		 
	}

}

 

package baal.exception;

public class Tester {
	
	 

	public void getNo1(String a) throws BaalException  {
		if("baal".equals(a))throw new BaalException("String is baal");
	}

}

 

 

运行控制台的结果:

 

 

 baal.exception.BaalException: String is baal
                at baal.exception.Tester.getNo1(Tester.java:8)
                at baal.exception.Main.main(Main.java:13)

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值