(4)自定义异常MyException类。两个构造方法,一个参数和方法体都为空,另一个构造方法的参数是字符串,显示异常名称。 在UsingMyException类中定义两个方法f()和g(),方法f()会输出“Throws MyException from f()”,方法g()会输出“Throws MyException from g()”。这两个方法都会抛出自定义异常MyException。g()异常发生时会显示“originated in g()”。 在主类TestMyException中调用f()和g()方法。异常发生时会显示异常堆栈信息。
时间: 2024-03-16 15:47:02 浏览: 33
好的,我已经明白你的问题了。下面是代码实现:
```java
class MyException extends Exception {
public MyException() { }
public MyException(String message) {
super(message);
}
}
class UsingMyException {
public void f() throws MyException {
throw new MyException("MyException from f()");
}
public void g() throws MyException {
try {
f();
} catch(MyException e) {
throw new MyException("originated in g()", e);
}
}
}
public class TestMyException {
public static void main(String[] args) {
UsingMyException obj = new UsingMyException();
try {
obj.f();
} catch(MyException e) {
e.printStackTrace();
}
try {
obj.g();
} catch(MyException e) {
e.printStackTrace();
}
}
}
```
在这个程序中,我们首先定义了一个自定义异常类 `MyException`,其中包含两个构造方法。接下来,在 `UsingMyException` 类中,我们定义了两个方法 `f()` 和 `g()`,这两个方法都会抛出自定义异常 `MyException`。在方法 `g()` 中,我们通过 `try-catch` 块捕获了 `f()` 方法抛出的异常,并将其重新抛出一个新的异常,并添加了一个自定义的异常信息。
在主类 `TestMyException` 中,我们创建了一个 `UsingMyException` 对象,并分别调用了 `f()` 和 `g()` 方法。如果发生异常,则会输出异常堆栈信息。
阅读全文