编写一个FullStackException类,它继承Exception类。捕获该异常时,可以通过该类继承来的getMessage方法获取栈的深度。
时间: 2024-03-25 10:39:30 浏览: 49
捕获异常并写入日志的一个类
4星 · 用户满意度95%
好的,以下是FullStackException类的代码:
```java
public class FullStackException extends Exception {
public FullStackException(String message) {
super(message);
}
public int getStackDepth() {
return getStackTrace().length;
}
}
```
这个类继承了Exception类,并添加了一个名为getStackDepth的方法,用于获取栈的深度。当抛出FullStackException异常时,可以使用getMessage方法获取异常信息,也可以使用getStackDepth方法获取栈的深度。例如:
```java
public class Test {
public static void main(String[] args) {
try {
test();
} catch (FullStackException e) {
System.out.println(e.getMessage());
System.out.println("Stack depth: " + e.getStackDepth());
}
}
public static void test() throws FullStackException {
try {
test1();
} catch (Exception e) {
throw new FullStackException("Stack overflow");
}
}
public static void test1() {
test2();
}
public static void test2() {
test3();
}
public static void test3() {
test4();
}
public static void test4() {
// 循环调用自身,造成栈溢出
test4();
}
}
```
在这个例子中,test4方法会循环调用自身,最终造成栈溢出异常。在test方法中,catch块捕获异常并抛出FullStackException异常,并传入异常信息。在main方法中,通过getMessage方法和getStackDepth方法获取异常信息和栈的深度。输出结果如下:
```
Stack overflow
Stack depth: 7
```
阅读全文