在Java中,如果一个方法抛出错误,则调用它的方法可以将其传递给下一个方法。
public void foo() throws Exception {
throw new Exception();
}
public void bar() throws Exception {
foo();
}
public static void main(String args[]) {
try {
bar();
}
catch(Exception e) {
System.out.println("Error");
}
}
我正在迅速编写一个应用程序,并且希望做同样的事情。这可能吗?如果不可能,还有哪些其他可能的解决方案?我进行调用的原始函数具有此结构。
func convert(name: String) throws -> String {
}
参考Swift-
错误处理文档
,您应该:
1- 通过声明符合错误协议的 枚举
来创建自定义错误类型:
enum CustomError: Error {
case error01
}
2- 声明foo()
为可抛出函数:
func foo() throws {
throw CustomError.error01
}
3- 声明bar()
为throwable函数:
func bar() throws {
try foo()
}
需要注意的是,虽然bar()
是抛出(throws
),它并 没有
包含throw
,为什么呢?因为它调用foo()
(这也是一个引发错误的函数)的调用try
方式是-将隐式地- 抛出该异常foo()
。
为了更清楚一点:
4- 实施test()
功能(抓捕):
func test() {
do {
try bar()
} catch {
print("\(error) has been caught!")
}
}
5- 通话test()
功能:
test() // error01 has been caught!
如您所见,bar()
自动引发错误,这是指foo()
函数错误引发。
当500内部服务器发生时,我想抑制tomcat显示的堆栈跟踪。我在web.xml中包含了一个定制的error.html页面,并提到了文件位置和错误代码 进行上述更改后,对于所有 API 的 tomcat 返回 404 未找到。
在另一种情况下,经过去模糊处理后,我得到的不是正常的堆栈跟踪,而是如下所示: 是什么原因,有可能莫名其妙地从这得到一个正常的堆栈跟踪?
我正在应用程序中使用spring SimpleMappingExceptionResolver 我的错误处理程序也很简单 如何打印异常消息和异常堆栈跟踪(或电子邮件)在我的错误控制器? 提前致谢 更新 谢谢你的回复。我想在jsp和控制台中打印堆栈跟踪。我还想要访问ErrorController本身中对象,这样我就可以使用这些信息来发送日志(由于一些调用是基于ajax的(它们使用POST),Erro
问题内容: 假设您执行 e.printStackTrace() ,则捕获到一个异常并在标准输出(例如控制台)上获得以下内容: 现在,我想将其发送给log4j之类的记录器,以获取以下信息: 我怎样才能做到这一点? 问题答案: 您将异常直接传递给记录器,例如 取决于log4j来呈现堆栈跟踪。
问题内容: 程序中没有单个方法“知道”它在堆栈中的位置。它所知道的只是它自己的小工作,它完成了并返回了。因此,当引发异常并打印堆栈跟踪时,它是从哪里来的? 在JVM中监视程序状态的每个应用程序旁边隐式地运行着一个单独的线程吗?还是JVM本身保存此信息,并且在抛出异常时以某种方式从异常中提取数据? 如果是上述两种情况之一,是否可以使用某些调用来检索堆栈跟踪(从监视器线程或JVM) 而不会 引发异常?
问题内容: 我正在运行一个用Java在Eclipse中编写的程序。对于很大的输入,该程序具有很深的递归级别。对于较小的输入,程序运行正常,但是在给出较大的输入时,出现以下错误: 可以通过增加Java堆栈大小来解决此问题,如果可以,那么如何在Eclipse中做到这一点? 更新: @乔恩·斯基特 该代码递归地遍历解析树以建立数据结构。因此,例如,代码将使用解析树中的一个节点来做一些工作,并在该节点的两