Java之创建自定义异常

本文介绍了在Java中创建自定义异常的方法,包括让编译器生成默认构造器以及定义带字符串参数的构造器。通过这些构造器,可以更方便地表示和处理程序中可能出现的特定错误。异常处理程序中利用`printStackTrace()`方法,能够显示详细的错误调用路径。

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

Java提供的异常体系不可能预见所有的希望加以报告的错误,所以可以自己定义异常类来表示程序中可能会遇到的特定问题。

如果我们要定义异常类,必须从已有的异常类继承,最好是选择意思相近的异常类继承。

建议新的异常类型最简便的方法就是让编译器为你产生默认构造器,这样就减少了写入代码的量:

//编译器创建了默认的构造器,它将自动调用基类的默认构造器
class SimpleException extends Exception{}

public class InheritingExceptions {
	public void f() throws SimpleException{
		System.out.println("Throw SimpleException from f()");
		throw new SimpleException();
	}
	public static void main(String[] args) {
		InheritingExceptions sed = new InheritingExceptions();
		try {
			sed.f();
		}catch(SimpleException e) {
			System.out.println("Caught it!");
		}		
	}
}

结果:

 

为异常类定义一个接受字符串参数的构造器:

class MyException extends Exception{
	public MyException() {}
	public MyException(String msg) {
		super(msg);
	}
}
public class FullConstructors {
	public static void f() throws MyException{
		System.out.println("Throwing MyException from f()");
		throw new MyException();
	}
	public static void g() throws MyException{
		System.out.println("Throwing MyException from g()");
		throw new MyException("Originated in g()");
	}
	public static void main(String[] args) {
		try {
			f();
		}catch(MyException e) {
			e.printStackTrace(System.out);
		}try{
			g();
		}
		catch(MyException e) {
			e.printStackTrace(System.out);
		}
	}
}

结果:

分析:相比第一个而言,增加的代码量并不大,两个构造器定义了MyException类型对象的创建方式。对于第二个构造器而言,使用super关键字明确调用了其基类构造器,它接受一个字符串作为参数。

在异常处理程序中,调用了在Throwable类声明的printStackTrace()方法。从输出可以看到:它将打印“从方法调用处直到抛出异常处”的方法调用序列。这里信息被发送到了System.out,并且自动地被捕获和显示在输出中。

 

谢谢大家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值