【发布时间】:2019-08-14 21:25:40
【问题描述】:
如何引发错误,以便在我运行程序时显示exc.printStackTrace(System.out);:
public String getName(){
try {
if(haveName()) return Name;
else {
throw new CorrectNameException("no name");
}
} catch (ExistException e) {
return e.getExc();
} catch (CorrectNameException exc) {
exc.printStackTrace(System.out);
return "nameless";
}
}
【问题讨论】:
-
你有什么问题?
-
没事,我的教授让我在程序中引发错误,以便在程序执行时将附加程序的堆栈跟踪打印在控制台上
-
您需要了解自己的代码。捕获到 CorrectNameException 时会打印堆栈跟踪。如果执行 else 块,则抛出此类异常然后捕获。如果
haveName()返回 false,则执行 else 块。因此,要打印堆栈跟踪,haveName() 必须返回 false。你还没有发布它的代码,所以我们不知道它什么时候返回false,什么时候返回true。阅读其代码,并进行逻辑推理。 -
虽然其中有某种有趣的讽刺意味,但
CorrectNameException这个名字让我不寒而栗。听起来像EverythingIsFineException,通常情况是一切都不很好......但是,只是一个评论:在调试的痛苦中,我认为偶尔抛出一个@是合理的987654326@ any在代码中的哪里,只是为了查看调用来自哪里(尽管通常,当您添加断点时,调试器会向您显示)
标签: java printstacktrace