在什么情况下应该抓住java.lang.Error
一个应用程序?
通常,永远不会。但是,有时您需要捕获特定的错误。
如果您正在编写类似于框架的代码(正在加载第3方类),则捕获LinkageErrors(找不到类定义,不满意的链接,不兼容的类更改)可能是明智的。我还看到了一些愚蠢的第三方代码抛出错误的子类,因此您要么必须处理这些。
顺便说一下,我不确定不可能从OutOfMemory中恢复。
我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。
我已经在tomcat 7.0.55中部署了一个应用程序进行测试。我想捕获“HeapDumpOnOutOfMemoryError”是否正在发生。以下是我的JVM参数。 JAVA_OPTS="-server-Xms512M-Xmx2048M-XX: PermSize=256m-XX: MaxPermSize=512m-XX: UseConcMarkSweepGC-XX: UseParNewGC-XX:
问题内容: 考虑下面的Java 方法测试。请注意,我从这个有用的答案中借用了代码。 但是,请注意,会有一个试图把一个时进入。 输出: 可以通过Java泛型在编译时防止此错误吗? 问题答案: 之所以存在,恰恰是因为Java的类型系统无法正确处理这种情况(IIRC,在泛型出现之前,以与集合框架相同的方式改造数组为时已晚)。 因此,通常无法在编译时防止此问题。 当然,您可以创建内部API来包装此类操作,
是否有可能“拦截”会话超时? 我尝试了,但据我所知,当调用HttpSessionListener.session毁灭()'方法时,会话已经被摧毁。(所以我没有机会确定用户,拥有超时的会话) 另一个选项是PhaseListener,在restoreView阶段检查会话是否是“新的”。 但是,我需要在会话超时的“第二天”执行一些操作-不在以后的刷新中执行,也不在以后的登录中执行。 (背景:需要删除某些
问题内容: Java新手问题: 我需要捕获由第三方组件写入printStream的文本。 PrintStream默认为System.err,但可以更改为另一个PrintStream。 查看文档,我找不到将PrintStream的内容定向到字符串编写器/缓冲区的简单方法。 有人可以帮忙吗? 问题答案:
问题内容: 我在Python中构建了一个简短的url转换器引擎,并且看到大量的“管道破损”错误,并且很好奇在使用BaseHTTPServer类时如何最好地捕获它。这不是全部代码,但可以让您大致了解我目前正在做什么: 该代码本身运行良好,但是在生产中几乎立即开始引发错误: 这些错误的大部分似乎源于在调用send_header()方法时遇到的问题,其中我要写的是: 所以我很好奇在我的代码中尝试捕获此I