Java基础---自定义异常类

本文深入探讨了Java中自定义异常的实现方法,包括如何创建、抛出、捕获和处理自定义异常,以及与Java内置异常的区别,并通过实例展示了自定义异常的使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<pre name="code" class="java"><span style="line-height: 26px; font-size: 14px; font-family: SimSun;">-----------<a target=_blank target="_blank" href="http://www.itheima.com/" style="color: rgb(202, 0, 0); text-decoration: none;">android</a></span><a target=_blank target="_blank" href="http://www.itheima.com/" style="text-align: -webkit-center; text-decoration: none; line-height: 26px; font-size: 14px; font-family: SimSun; color: rgb(202, 0, 0);">培训</a><span style="text-align: center; text-indent: 28px; line-height: 26px; font-size: 14px; font-family: SimSun;">、</span><a target=_blank target="_blank" href="http://www.itheima.com/" rel="nofollow" style="text-align: center; text-indent: 28px; text-decoration: none; line-height: 26px; font-size: 14px; font-family: SimSun; color: rgb(202, 0, 0);">java培训</a><span style="text-align: center; text-indent: 28px; line-height: 26px; font-size: 14px; font-family: SimSun;">、java学习型技术博客、期待与您交流!------------</span>
<span style="text-align: center; text-indent: 28px; line-height: 26px; font-size: 14px; font-family: SimSun;"><span style="color:#ff0000;">1、需求</span></span>
<span style="text-align: center; text-indent: 28px; line-height: 26px; font-size: 14px; font-family: SimSun;">因为项目中会出现特有的问题,
而这些问题并未被java所描述并封装对象。
所以对于这些特有的问题可以按照java的对问题封装的思想。
将特有的问题。进行自定义的异常封装。
</span>
<span style="text-align: center; text-indent: 28px; line-height: 26px; font-size: 14px; font-family: SimSun;">
</span>
<span style="text-align: center; text-indent: 28px; line-height: 26px; font-size: 14px; font-family: SimSun;"><span style="color:#ff0000;">2、自定义异常类方法</span></span>
<span style="font-size: 14px; line-height: 26px; font-family: SimSun; text-align: center; text-indent: 28px;">a)定义一个类,继承异常类体系中的任何一员即可,例如继承Exception。因为只有异常体系中的类才可以被throw和throws操作。</span>
<span style="font-size: 14px; line-height: 26px; font-family: SimSun; text-align: center; text-indent: 28px;">b)在自定义异常类中定义有参数的异常类构造函数。用来处理自定义异常信息。</span>
<span style="font-size: 14px; line-height: 26px; font-family: SimSun; text-align: center; text-indent: 28px;">c)在可能出现异常的方法中使用throw new myException(msg);语句抛出自定义异常信息。</span>
<span style="font-size: 14px; line-height: 26px; font-family: SimSun; text-align: center; text-indent: 28px;">d)在抛出异常信息的方法名上,必须使用throws声明抛出的异常。</span>
<span style="font-size: 14px; line-height: 26px; font-family: SimSun; text-align: center; text-indent: 28px;">e)在调用含抛出异常的方法的代码块上,使用try..catch..语句捕获异常。</span>
<span style="font-size: 14px; line-height: 26px; font-family: SimSun; text-align: center; text-indent: 28px;">
</span>
3、throw和throws的区别。

throws使用在函数上,throw使用在函数内。
throws后面跟的异常类,可以跟多个,用逗号隔开;throw后跟的是异常对象。
<span style="font-family: Arial, Helvetica, sans-serif;">
</span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="color:#ff0000;">4、事例。</span></span>
//要想自定义一个异常类,必须继承异常体系中的类
//比如Throwable、Error、Exception
class  FuShuException extends Exception
{
	private int value;
	
	//构造函数
	FuShuException(){
		//调用父类构造函数
		super();
	}
	
	//构造函数
	FuShuException(String msg,int value){
		//调用父类构造函数
		super(msg);


		//处理本异常类中特有的数据
		this.value = value;
	}


	public int getValue(){
		return value;
	}
}


class ZeroException extends Exception
{
	ZeroException(){
		super();
	}
	ZeroException(String msg){
		super(msg);
	}
}


class Demo
{
	//如果函数体中,定义了throw语句,那么在方法名后必须声明throws
	//throws抛出的异常可以是函数体内出现的异常类或其父类
	int div(int a, int b)throws FuShuException,ZeroException,Exception{
	//可以只声明Exception,因为FuShuException,ZeroException都继承自Exception
	//int div(int a, int b)throws Exception{
		if(b<0){
			//自定义异常信息
			throw new FuShuException("除数不能为负!---/by fushu",b);
		}else if(b==0){


			//调用java异常体制中,Exception类的构造函数
			throw new ZeroException("自定义异常信息:除数不能为0。");
			
		}else if(a<5){


			//调用java异常体制中,Exception类的构造函数
			throw new Exception("默认Exception:a不能小于5");
			
		}
			
		return a/b;
	}
}


class ExcetionDemo3
{
	public static void main(String[] args) 
	{
		Demo d = new Demo();
		try{
			int x = d.div(4,-9);
			System.out.println("x="+x);


		//抛出自定义异常,只有异常系类的类才可以抛出
		}catch(FuShuException e){
			
			//调用自定义异常类中,继承自父类中的toSting方法。
			System.out.println(e.toString());


			//调用自定义异常类中特有的处理方法。
			System.out.print("错误的除数:"+e.getValue());
		}catch(ZeroException e){
			
			System.out.println(e.toString());
		}catch(Exception e){
			
			System.out.println(e.toString());
		}
		System.out.println("over");
	}
}


5、运行结果。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值