创建用户自定义异常时
- 继承自Exception类或某个子Exception类
- 定义属性和方法,或重载父类的方法
对于异常,不仅要进行捕获处理,有时候还需要将此异常进一步传递给调用者,以便让调用者也能感受到这种异常。这时可以在catch语句块或finally语句块中采取以下三种方式:
- 将当前捕获的异常再次抛出:throw e;
- 重新生成一个异常,并抛出,如:throw new Exception("some message");
- 重新生成并抛出一个新异常,该异常中包含了当前异常的信息,如:throw new Exception("some message", e);
可以用e.getCause() 来得到内部异常。从而形成异常链
实例代码如下:
/**
* 自定义异常类
*/
public class MyException extends RuntimeException {
//构造函数
public MyException(String message){
super(message);
}
public MyException(String message, Exception cause){
super(message, cause);
}
}
/**
* 自定义异常类
*/
public class DataException extends Exception{
public DataException(String message) {
super(message);
}
public DataException(String message, Exception cause) {
super(message, cause);
}
}
public class Demo {
public static void main(String[] args) {
GetBalanceInfo(1111111111);
}
public static void GetBalanceInfo(long ID) throws MyException {
try {
FindData(ID);
} catch (DataException e) {
throw new MyException("网络不佳,请重试", e);
}
}
public static void FindData(long ID) throws DataException {
if (ID > 0 && ID < 1000) {
System.out.println("ID = " + ID);
} else {
throw new DataException("没有这个数据");
}
}
}
在Java中创建用户自定义异常时,通常会继承自Exception类或其子类,并可能重载方法。当需要将异常传递给调用者时,可以通过在catch或finally块中重新抛出异常,或者生成包含原始异常信息的新异常。示例代码展示了一个自定义异常类MyException,它继承自RuntimeException,并在GetBalanceInfo方法中处理DataException,形成异常链。
278

被折叠的 条评论
为什么被折叠?



