我正在使用ColdFusion8。我想NoClassDefFoundError
在ColdFusion中捕获一个异常,但是我不能…它仍然失败,并且将错误记录在exception.log文件中。这是我尝试过的。
<cftry>
<cfset myJavaObject.myMethod()>
<cfcatch type="any">
<cfdump var="#cfcatch #">
</cfcatch>
<cfcatch type="java.lang.Throwable">
Horrible exception.
<cfdump var="#cfcatch #">
</cfcatch>
</cftry>
但这是行不通的。您能告诉我该怎么做吗?我需要在特定位置而不是在OnError
Application.cfc函数中捕获此错误。
现在,我已经喝了更多的咖啡,我认为cfcatch无法捕获NoClassDefFoundError
。根据文档,它仅处理Exceptions:
异常 是会干扰ColdFusion页面中的正常指令流的事件,例如数据库操作失败,缺少包含文件以及开发人员指定的事件。
NoClassDefFoundError
是一个错误。
错误表明严重的问题,合理的应用程序不应尝试抓住
听起来好像cfcatch
只是设计来处理正常的“可恢复”问题。一旦获得签证,实际上没什么可做的NoClassDefFoundError
。这是一个严重的错误,您无法克服它(在正常情况下)。您最多只能显示一条错误消息并退出。
Application.onError
似乎处理未捕获的错误,例如NoClassDefFoundError
,以及异常。因此,我认为您能做的最好的事情就是实施onError
并显示错误页面。
<!---- test code --->
<cfset myJavaObject = createObject("java", "path.to.MyClass") />
<cfset myJavaObject.myMethod() />
<!---- Application.cfc --->
<cfcomponent>
.... settings ...
<cffunction name="onError" returnType="void">
<cfargument name="Exception" required="true" />
<cfargument name="EventName" type="string" required="true" />
<h1>onError Test</h1>
<cfdump var="#Exception#" />
</cffunction>
</cfcomponent>
// test class
public class MyClass {
public void myMethod() {
throw new NoClassDefFoundError ("Testing...");
}
}
更新资料
Any类型包括Java对象类型java.lang.Exception的所有错误。它不包含java.lang.Throwable错误。要捕获Throwable错误,请在cfcatch标记类型属性中指定java.lang.Throwable
尽管有文档说明,但是Throwable
在我的任何测试(或您的测试)中均无法进行捕获。这强烈表明行为或文档中存在错误。无论哪种方式,它都 不能
像宣传的 那样
工作,因此如上所述,我知道的唯一替代方法是使用常规错误处理程序。如果由于某些原因必须坚持使用Application.cfm文件,请尝试使用<cferror type="exception" ...>
(荒谬)测试案例:
<cftry>
<cfset myJavaObject = createObject("java", "path.to.MyClass")>
<cfset myJavaObject.myMethod()>
<cfcatch type="java.lang.NoClassDefFoundError">
CAUGHT java.lang.NoClassDefFoundError
</cfcatch>
<cfcatch type="java.lang.LinkageError">
CAUGHT java.lang.LinkageError
</cfcatch>
<cfcatch type="java.lang.Error">
CAUGHT java.lang.Error
</cfcatch>
<cfcatch type="java.lang.Throwable">
CAUGHT java.lang.Throwable
</cfcatch>
<cfcatch type="any">
CAUGHT ANY
</cfcatch>
<cfcatch>
CAUGHT
</cfcatch>
</cftry>
大概是这样的: 谢谢[已解决] 也感谢Umer Farooq的回答:从lambda内部修改局部变量
问题内容: 我在Java Web应用程序中有一个线程,它导致 java.lang.OutOfMemoryError:Java堆空间 异常,但是try / catch块无法捕获该错误。 样例代码: 输出: 背景: 我最近接手了这个Java项目,并试图跟上Java和这个项目的发展。我是C#开发人员,所以我还不熟悉这个项目或Java。我知道我可以使用- Xmx设置来修复该错误,但我有兴趣捕获此错误,因此
我喜欢认为我很擅长PowerShell,但我在这里有点困惑。 我有一个巨大的文件列表,我将在上面运行此代码,这将给我一些必要的文件信息,我将运行分析。第一步就是获取文件列表。所以我运行这个。 这返回了一堆无用的信息,但也给了我一片红色的海洋。有大量的文件和文件夹无法找到,并明确拒绝我。我想捕获所有这些错误,以便将它们解析为相关信息,因此我的直觉告诉我使用Try/catch。 通常情况下,您使用tr
我再次编写另一个银行系统插件,但这次是使用ATM。我正在尝试弄清楚如何在单击该选项后获得玩家聊天输入,以防止单击100次以在银行帐户上存入50,000美元。 我正在用Paper-Spigot 1.14.4编写这个插件,我尝试了以下步骤: 作为一个单独的类,仅当我向插件管理器注册事件时才激活: 使用 get 和 set-method创建一个 变量 ,并在需要时在该方法中调用它。 我当前的方法: 获取
我有一个存储过程似乎没有正确记录错误。 代码有错误,但 catch 块似乎未生效。 try块相当长,但错误部分很简单,并且在最后出现,所以我已经对此进行了预测。 proc失败的错误是我们的老朋友“列名或提供的值的数量与表定义不匹配”。我已经修复了这个错误 - 这是一个愚蠢的懒惰错误 - 但我感到困惑为什么我的错误日志记录过程似乎没有工作 - 没有行入到我的 ExtractsErrorLog 表中。
问题内容: 当仅更改位置哈希值时,是否有办法应对javascript中的后退按钮被击中(或按下退格键)的问题?也就是说,当浏览器不与服务器通信或重新加载页面时。 问题答案: 使用事件: 如果需要支持较旧的浏览器,请查看Modernizr的HTML5跨浏览器Polyfills Wiki页面中的“事件”部分。