java异常

异常的继承层次
顶级类:Throwable
Exception类:是程序员能够写代码处理的异常根类分为两个类别:

免检异常:不是必须添加try catch finally的程序是能够编译和执行的,执行时触发了符合了的异常程序还是意外终止
       必检异常:必须添加try catch finally,如果不添加则会有红波浪线提示,说明程序是不能编译和执行的

Error类:不是程序员能使用的,一般情况下是jvm使用的
如何判断异常是免检异常还是必检异常

如果程序员在写代码没有报错,但报红波浪线了,并提示"UnHandled
exception type XXXException" 这句话属于必检异常
必检异常必须添加try catch 否则红波浪线不会消失

throws

throws关键字放在方法声明的后边,可以写很多个异常类型,直接用逗号间隔表明此方法体可能会抛出的异常,这些异常不在当前的方法体中用try catch finally来处理谁调用此方法谁用try catch finally 来处理
注意:Exception类型必须放在所有异常类型的最后边
  throws的应用场景,一般情况下,写类库的时候类库是提供给其他项目使用的,类中的方法如果有异常的,就适合用throws抛出,然后谁调用方法,谁就用try catch来处理

throw

在java中有一个Exception类,这个类有很多子类,每个子类都对应一种异常类型,这些异常类型都是java类库自带的异常类型,比如NullPointerException,类似于这些异常都是java定义完的规则,触犯规则就抛出异常,即,系统定义的规则,系统 检测到就由系统抛出
java不可能把所有的项目中遇到的异常都事先写好异常类,由程序员根据实际的业务来抛出异常

自定义异常

程序员自己创建的java类,但是必须继承自Exception及其子类中的任何类都可以,那么此类就是自定义异常类
自定义异常类就是作为本项目的异常类型补充
应用场景:java不可能把所有的项目中遇到的异常都事先写好异常类,由程序员根据实际的业务来自定义异常类,在自定义异常类中提供异常错误信息

示例代码
/**
 *自定义异常类 AgeException
 * @author PC
 *
 */
public class AgeEcxeption extends Exception{
	public AgeEcxeption(){
		super("年龄不对1");
	}
	public AgeEcxeption(String message){
		super(message);
	}
	@Override
	public String getMessage() {
		return "年龄不对";
	}
	
	
}

//测试模块 
private void setAge3(int age) throws AgeEcxeption{
		if(age>=1 && age<=100){
			this.age=age;
		}else{
			//建议抛免检异常
			throw new AgeEcxeption("年龄不正确");
		}
	} 
	@Test
	public void testMethod3(){
	//	setAge3(10000);
		try {
			setAge3(10000);
		} catch (AgeEcxeption e) {
			e.printStackTrace();
			e.getMessage();
			//System.out.println(e.getMessage());
		}	
	}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值