- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个可以上传大量 Logo 的表格。我正在验证 cftry/cfcatch
中的文件(空的表单字段、错误的扩展名……)陈述。
当我在 cftry
中发现错误时,我这样做:
<cfthrow type="FileNotFound" message="#tx_settings_app_error_create_first#" />
<cfcatch>
<cfoutput><script type="text/javascript">window.onload = function(){alert("#cfcatch.message#");window.location.href="hs_apps.cfm"; } </script></cfoutput>
</cfcatch>
<cfquery datasource="#Session.datasource#" name="duplicates">
SELECT a.app_alias
FROM apps AS a
WHERE a.iln = <cfqueryparam value = "#Session.loginID#" cfsqltype="cf_sql_varchar" maxlength="13">
AND a.app_alias = <cfqueryparam value = "#form.app_basic_alias#" cfsqltype="cf_sql_varchar" maxlength="50">
</cfquery>
<cfif duplicates.recordcount GT 0>
<cfthrow type="FileNotFound" message="#tx_settings_apps_error_dup#" />
</cfif>
cfcatch
也是一样的。
cftry/cfcatch
来这里工作?我一无所知。
<cfif isDefined("send_basic")>
<cfset variables.timestamp = now()>
<cfset variables.orderview = "1">
<cfif form.send_basic_type EQ "new">
<cftry>
<cfif module_check.recordcount GT 0>
<cfloop query="module_check">
<cfif module_check.module_name EQ "preorder">
<cfset variables.module_name = module_check.module_name>
<cfset variables.b2b_preord_ok = "true">
</cfif>
</cfloop>
<cfif form.app_basic_orderview EQ "preo">
<cfset variables.orderview = "0">
</cfif>
</cfif>
<!--- PROBLEM HERE: DUPLICATES --->
<cfquery datasource="#Session.datasource#" name="duplicates">
SELECT a.app_alias
FROM apps AS a
WHERE a.iln = <cfqueryparam value = "#Session.loginID#" cfsqltype="cf_sql_varchar" maxlength="13">
AND a.app_alias = <cfqueryparam value = "#form.app_basic_alias#" cfsqltype="cf_sql_varchar" maxlength="50">
</cfquery>
<cfif duplicates.recordcount GT 0>
<cfthrow type="FileNotFound" message="#tx_settings_apps_error_dup#" />
</cfif>
<!--- IF PASS, CREATE/UPDATE --->
<cfquery datasource="#Session.datasource#">
INSERT INTO apps ( ... )
VALUES( ... )
</cfquery>
<cfset variables.app_action = "Applikation erstellt">
<!--- success --->
<cfoutput><script type="text/javascript">window.onload = function(){alert("#tx_settings_app_cfm_create#");}</script></cfoutput>
<cfcatch>
<cfoutput><script type="text/javascript">window.onload = function(){alert("#tx_settings_app_err_create#");}</script></cfoutput>
</cfcatch>
</cftry>
<cfelse>
<cftry>
<!--- UPDATE --->
<cfquery datasource="#Session.datasource#">
UPDATE apps
SET ... = ...
</cfquery>
<cfset variables.app_action = "Applikation aktualisiert">
<!--- success --->
<cfoutput><script type="text/javascript">window.onload = function(){alert("#tx_settings_app_cfm_update#");}</script></cfoutput>
<cfcatch>
<cfoutput><script type="text/javascript">window.onload = function(){alert("#tx_settings_app_err_update#");}</script></cfoutput>
</cfcatch>
</cftry>
</cfif>
</cfif>
<cfthrow type="FileNotFound" message="#tx_settings_apps_error_dup#" />
tx_settings_apps_error_dup
后面的文字.如果我转储
cfcatch
,
cfcatch.message
是我指定的文本,所以错误会被捕获,只有我得到一个服务器错误页面和一个警报。我对文件上传和表单提交使用完全相同的处理程序。我不明白为什么它在这里不起作用?
<cfif dups.recordcount NEQ 0>
<cfoutput><script type="text/javascript">window.onload = function(){alert("#tx_settings_apps_error_dup#"); location.href = "hs_apps_detail.cfm?create=newApp&id=none";}</script
</cfoutput>
<cfabort>
</cfif>
cfabort
以防止旧页面进一步处理。补丁就是。
最佳答案
(将其从仅作为评论移至下方)
好的,所以如果你能够转储它,catch 肯定会捕捉到异常,所以不是 try/catch 不起作用,而是别的东西。请记住,处理将一直持续到您的 catch block 之后的请求结束,然后才会刷新输出缓冲区,并且您的 alert()
发送到浏览器。在我看来,在您输出警报并继续处理之后,正在发生一些其他错误,导致服务器的错误页面显示。我建议暂时摆脱错误页面并关注 CF 正在引发的实际错误。
注意:如果您希望在输出 alert()
后立即在 catch block 中停止处理,您需要告诉 CF,即:使用 <cfabort>
.否则,如上所述,它将继续进行。
我认为服务器错误页面捕获的异常仍然记录在异常日志中,但我可能是错的。你总是可以把 onError()
您的 Application.cfc
中的处理程序,记录发生的任何错误,然后重新抛出错误,以便错误页面仍然处理它。这样您就可以获得有关错误的信息,并且下注者仍然可以看到漂亮的错误页面。
关于coldfusion - 为什么我无法在 Coldfusion cftry/cfcatch 语句中捕获错误消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698797/
我在 。 this is to test email success email failed x is #x# 我想找到某种方法来在 or
在ColdFusion 8或更低版本中,标记的线是否在正确的位置? SELECT ID FROM TableName WHERE ...
我们有一个允许用户上传文件的系统,我们遍历该文件,然后制作另一个文件。上传文件的用户是登录用户。 问题是文件包含敏感数据,所以我们必须删除它们。正如您可以想象的那样,有几个地方可以将更多信息写入文件并
我正在尝试使用 和 代码块。但是我对某些事情感到困惑,我放了 阻止我的查询,该查询的结果不为空,但条件总是进入 堵塞。 例子 : select * from allcar
我有一个可以上传大量 Logo 的表格。我正在验证 cftry/cfcatch 中的文件(空的表单字段、错误的扩展名……)陈述。 当我在 cftry 中发现错误时,我这样做: 在我的“cfcatc
我是一名优秀的程序员,十分优秀!