### 操作步骤
1.自定义异常类MyException,继承Exception,要有无参和有一个字符串参数的构造方法
2.定义一个普通类UsingMyException,里面定义两个无参方法-f()和g(),f()方法要使用throws和throw抛出MyException类,并输出一句话--"抛出异常MyException 从 f()方法",g()方法要使用throws和throw抛出MyException类,并输出一句话--"抛出异常MyException 从 g()方法",并调用MyException类的有参构造方法,传入“从g()方法中抛出异常”,
3.定义测试类:在测试类中调用两次try--catch,调用一次finally关键字。
### 控制台输出如下内容:
抛出异常MyException 从 f()方法
抛出异常MyException 从 g()方法
从g()方法中抛出异常
最终结束
### 请编写程序,实现上述要求。
// 自定义异常类 MyException
class MyException extends Exception {
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
}
// 普通类 UsingMyException
class UsingMyException {
public void f() throws MyException {
System.out.println("抛出异常 MyException 从 f() 方法");
throw new MyException();
}
public void g() throws MyException {
System.out.println("抛出异常 MyException 从 g() 方法");
throw new MyException("从 g() 方法中抛出异常");
}
}
// 测试类
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) {
System.out.println(e.getMessage());
} finally {
System.out.println("最终结束");
}
}
}
运行程序后,输出如下内容:
抛出异常 MyException 从 f() 方法
MyException
at UsingMyException.f(TestMyException.java:10)
at TestMyException.main(TestMyException.java:21)
抛出异常 MyException 从 g() 方法
从 g() 方法中抛出异常
最终结束
解释一下输出结果:
第一次调用 obj.f() 方法时,会抛出 MyException 异常,并输出 "抛出异常 MyException 从 f() 方法"。异常被 catch 语句捕获,然后调用 printStackTrace() 方法打印异常信息。
第二次调用 obj.g() 方法时,会抛出 MyException 异常,并输出 "抛出异常 MyException 从 g() 方法"。异常被 catch 语句捕获,然后调用 getMessage() 方法获取异常信息,并输出 "从 g() 方法中抛出异常"。
最后输出 "最终结束"。由于 finally 关键字的作用,无论是否发生异常,该语句块都会执行。