什么是结构化异常处理
该错误没有被捕获,因为结构化异常处理尚未生效,用户看到标准的错误信息。在可以捕获错误,你必须告诉ColdFusion,试图捕捉一个错误:
CFTRY告诉ColdFusion,观看的错误代码封闭块,CFCATCH告诉ColdFusion做什么,如果发生错误。 CFCATCH类型=“任何”告诉ColdFusion,任何错误导致内通过执行特定CFCATCH块的代码。 CFCATCH需要一个属性命名的类型,它指定的错误是捕获的类型。如果你想只捕获数据库错误,例如,您可以使用下面的代码:
如果您使用此CFTRY / CFCATCH建设,所有的数据库错误捕获并在CFCATCH标签对代码中处理,所有nondatabase错误,通过向在应用程序的下一个层次结构化异常处理的框架。通过指定一个作为参数CFCATCH的类型属性先进的异常的类型,可以捕获并处理非常具体的错误之外的ColdFusion服务器的边界发生。实施这项许多错误类型的一点是,你的结构化异常处理可以granularly回应每键入一个特定的方式。你可以,例如,有一个异常处理程序,能够抓住两种不同的类型和处理它们两种不同的方式,具体如下:
上面的例子可以捕获一个数据库错误或表达错误和输出不同的信息,这取决于哪一个。如果错误是不是一个数据库或表达错误,该错误没有被捕获,用户看到的信息输出标准。CFCATCH类型=“任何”不能赶上一个类型的错误。具体来说,键入=“任何”捕获任何错误从Java类java.lang.Exception异常义务。类型=“任何”不,但是,从发现错误java.lang.Throwable的义务。为了赶上这些错误,你必须定义一个特殊的CFCATCH,内容如下:
你很少遇到这种类型,因为标准ColdFusion特性都抛出这种类型的错误。您可能会惊讶地得知,你不能在所有捕获某些错误。下面的代码,例如,将抛出一个错误,不论CFTRY周围不好的代码:
该CFSET没有的内容,使ColdFusion抛出一个错误信息,说明,发现无效的CFML构建网上的专栏7 9。这一结果似乎有些奇怪,但是,因为你有一个CFTRY和CFCATCH类型=“任何”。这里的问题是,坏CFSET创建了一个编译时错误,而不能与CFCATCH被捕。 CFCATCH可以赶上只有一个运行时错误,在模板的执行过程中发生。在前面的代码段的情况时,coldfusion无法成功地分析和编译该页面,所以异常处理没有生效。如果你CFINCLUDE一个编译时错误,调用页面才能跟上网页模板类型错误。这是罕见的,你应该小心,不要依赖于处理追上编译时错误异常。简短的答案是什么!您可以处理错误的任何方式,您认为合适的,从完全忽视它,仔细地研究这项计划,对路由用户另一种模板。您通常会做两件事之一,但是。要么将用户重定向到不同的页面或显示一个用户友好的消息告诉他发生了什么。您可以按照用户重定向以下两种哲学。首先是为每个可能出现的错误和用户重定向到该特定的页面错误页,如下面的例子:
这种方法的缺点是不能告诉你到底发生了什么,以及为什么。一个更好的选择是将用户重定向到一个错误页面,但通过URL中的错误信息,具体如下:
此代码传递一个URL参数详细的错误信息,错误页。另一种方法是直接显示某些类型的消息,而不是重定向用户,如下:
您可能会注意到,前面的代码将在这个讯息的CFABORT,你不希望差错页面,继续发生错误后执行。最后一个选项是很少使用的是要忽略错误。这通常只适合如果你是预期发生错误,但它不向你是否发生错误与否,如以下代码所示:
如果你忽略的错误,增加了注释到CFCATCH块通常是一个好主意,让你不糊涂,如果你回头看后面的代码。并意识到忽略的错误能够证明危险的,因为你最终可能无意中捕捉更严重的错误比您预期。至少采伐利用CFLOG可能是一个好主意的错误,即使您忽略它在下面的例子:
这样,您可以查看日志文件中特定的错误。 由Jose Carreto提交的一篇文章 免责声明:我们的网站是不负责本文章的内容。 Webarticles是一个免费的信息资源。 重要事项: 这篇文章“什么是结构化异常处理”是由一个自动翻译软件。我们感到很遗憾拼写的任何可能发生的错误。谢谢您的理解。
|
|||||
| Online: 467 users browsing the articles directory |
|
|