Asp.net mvc 在ASP.NET MVC中放置异常日志的位置
请任何人解释一下下面两种方法的区别 登录控制器的OneException事件:Asp.net mvc 在ASP.NET MVC中放置异常日志的位置,asp.net-mvc,exception-handling,Asp.net Mvc,Exception Handling,请任何人解释一下下面两种方法的区别 登录控制器的OneException事件: try { //code } catch { //rollback trasanctions throw; } 或者,登录catch块: try { //code } catch { //logging here //rollback trasactions throw; } 当请求处理过程中出现未处理的异常时,将使用控制器的OnExcep
try
{
//code
}
catch
{
//rollback trasanctions
throw;
}
或者,登录catch块:
try
{
//code
}
catch
{
//logging here
//rollback trasactions
throw;
}
当请求处理过程中出现未处理的异常时,将使用控制器的
OnException
方法。它指示发生意外异常时应执行的功能。你真的应该只在你搞砸了或者系统以意外的、致命的方式出现故障的情况下使用它作为保护措施
如果您正在执行某段代码,希望引发特定异常,请将其包装在try
块中,并相应地处理特定异常。这种防御性的方法将帮助您在问题发生时立即调试问题,而不是等到问题冒泡到您不知道原因的地步
试想一下,如果您有多个操作方法,并且每个控制器只有一个OnException
方法,那么您需要处理一个更复杂的问题,因为任何操作方法或过滤器都可能抛出错误。但是,如果捕获到由特定服务调用调用的异常,那么您已经确切地知道是什么导致了意外行为,并且相应地解决该异常会容易得多
阅读本文以获得更多理解:埃里克·利珀特(Eric Lippert)有一篇优秀的文章,他将我们遇到的不同类别的例外情况进行了分类,并提供了解决这些问题的最佳实践。可在以下网址下载:。如果你不知道Eric Lippert是谁,他非常聪明,如果你用C#编写代码,你应该听他的。他的主要观点是:
- 不要捕捉致命的异常;不管怎么说,你对他们无能为力,而试图让事情变得更糟
- 修复您的代码,使其永远不会触发boneheaded异常–生产代码中永远不会发生“索引超出范围”异常
- 通过调用在非异常情况下抛出的那些烦恼方法的“Try”版本,尽可能避免烦恼异常。如果无法避免调用一个烦恼方法,请捕获它的烦恼异常
- 始终处理指示意外外部条件的异常;一般来说,预测每一次可能的失败都是不值得或不实际的。只需尝试该操作并准备好处理异常
HandleErrorAttribute
并利用ErrorController
使其可以全局应用
此外,以下由5部分组成的博客系列深入分析了MVC应用程序中错误处理的不同选项:当请求处理过程中出现未处理的异常时,将使用控制器的
OnException
方法。它指示发生意外异常时应执行的功能。你真的应该只在你搞砸了或者系统以意外的、致命的方式出现故障的情况下使用它作为保护措施
如果您正在执行某段代码,希望引发特定异常,请将其包装在try
块中,并相应地处理特定异常。这种防御性的方法将帮助您在问题发生时立即调试问题,而不是等到问题冒泡到您不知道原因的地步
试想一下,如果您有多个操作方法,并且每个控制器只有一个OnException
方法,那么您需要处理一个更复杂的问题,因为任何操作方法或过滤器都可能抛出错误。但是,如果捕获到由特定服务调用调用的异常,那么您已经确切地知道是什么导致了意外行为,并且相应地解决该异常会容易得多
阅读本文以获得更多理解:埃里克·利珀特(Eric Lippert)有一篇优秀的文章,他将我们遇到的不同类别的例外情况进行了分类,并提供了解决这些问题的最佳实践。可在以下网址下载:。如果你不知道Eric Lippert是谁,他非常聪明,如果你用C#编写代码,你应该听他的。他的主要观点是:
- 不要捕捉致命的异常;不管怎么说,你对他们无能为力,而试图让事情变得更糟
- 修复您的代码,使其永远不会触发boneheaded异常–生产代码中永远不会发生“索引超出范围”异常
- 通过调用在非异常情况下抛出的那些烦恼方法的“Try”版本,尽可能避免烦恼异常。如果无法避免调用一个烦恼方法,请捕获它的烦恼异常
- 始终处理指示意外外部条件的异常;一般来说,预测每一次可能的失败都是不值得或不实际的。只需尝试该操作并准备好处理异常
HandleErrorAttribute
并利用ErrorController
使其可以全局应用
此外,以下由5部分组成的博客系列深入分析了MVC applic中错误处理的不同选项