异常2——深化(Java)

本文深入探讨了Java异常处理,包括自定义异常类、继承中异常的处理规则以及finally语句块的应用。自定义异常需根据异常类型继承相应基类,如RuntimeException。父类声明异常与子类的关系遵循特定规则,子类可声明父类异常的子类或子集。finally语句确保无论是否发生异常,其内的代码都将执行。同时,文章提到了final、finally和finalize的区别,并总结了Java异常体系,强调了正确处理编译时异常的方法。
摘要由CSDN通过智能技术生成

在异常初识中只是简单的介绍了异常的体系和异常的解决方法,这篇文章将对异常的一些特殊情况进行介绍。

1.自己定义一个异常类进行声明或者捕获

当我们不了解异常的种类或者异常中没有我们想要的类那么可以自己定义一个异常类,但是这个异常类要根据是编译时异常还是运行时异常去继承不同的异常类,当然可以直接继承最终的异常类或是包括最大的异常类。一般而言都是运行时异常,而运行时异常要继承的类为RuntimeException类。


public class Main1 {
	public static void main(String[] args)  {
		byte[] b;
		try{
			b=new byte[Integer.MAX_VALUE];  //这里会产生异常,原因是数组的空间也有限制,Integer.MAX_VALUE这个值超过了数组的空间
		}catch(OutOfMemoryError e){     //这是异常体系中存在的异常类,也是数组空间过大产生的异常,在这里捕获
			System.out.println("数组解决了!");  //一旦捕获到这个异常就解决
			b=new byte[10];
		}
		System.out.println(b.length);
		


		try{
			test(121); 
		}catch(TimeBigerExcetion e){ //这是自己定义的异常类(该类在下面)
			System.out.println(e+" 该问题已处理!"); //当我们在运行时捕获到TimeBigerExcetion这个异常时,打印这个异常的信息,然后解决这个问题
		}catch(TimeSmallerException e){  //当我们在运行时捕获到TimeSmallerException 这个异常时,打印这个异常的信息,然后解决这个问题
			System.out.println(e+" 都已交卷,问题已处理!");
		}
		System.out.println("over");
	}

	public static void test(int time) throws TimeBigerExcetion,TimeSmallerException { //这是上面试着运行的方法,我们发现可以抛出多个异常
		
		if(time<0){  //当传进来的参数也就是时间小于0,会产生TimeSmallerException这个异常,我们声明它的对象,并给出信息
			throw new TimeSmallerException("时间小于0,不能交卷!");
		}
		if(time>120){ //当传进来的参数也就是时间大于正常时间,会产生TimeBigerExcetion这个异常,我们声明它的对象,并给出信息
			throw new TimeBigerExcetion("时间到了,停止作答");
		}
	}
}
class TimeSmallerException extends RuntimeException{  //这是自己定义的一个异常类,它继承了RuntimeException类
	public TimeSmallerException(String s){ //代参的构造方法,上面声明时创建的对象就是调用的该构造方法
		super(s);调用父类的构造方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值