asp.net - 处理 ASP.NET MVC Controller 构造函数中发生的异常

标签 asp.net asp.net-mvc exception constructor controller

处理 Controller 构造函数内发生的异常的最佳方法是什么?

我能想到的就是使用 Application_OnError() 或在我的 ControllerFactory 中放置一个 try/catch。

这些解决方案似乎都不理想。 Application_OnError 太宽泛 - 我的网站中有一些非 MVC 内容,它们有自己的错误处理。

使用 try/catch block 似乎有点老套。

如果我提供不同的内容类型 -html/text/json/rss...我希望能够在操作方法中处理异常,而不必编写各种条件来确定什么要提供的错误消息类型。

我在这里遗漏了什么,还是其他人处理过这个问题?

最佳答案

如果在创建 Controller 时 ControllerFactory 中发生异常,则无法在操作方法中处理异常。

就我个人而言,我只会执行 try/catch,实例化一些错误处理 Controller ,然后通过它路由请求。

一个更好的问题是 - 你的 Controller 如此依赖于什么而没有得到满足,以至于在构造它们时必须抛出异常?表面上,简单地创建 Controller 不应该成为异常的巨大来源。如果是,也许您可​​以考虑延迟实例化操作方法(而不是构造函数)中的依赖项,并实现 ErrorHandlingController approach 。这会将异常“向下”推送到 Controller 本身,因此您可以采取更加以 Controller 为中心的方法来处理它们。

关于asp.net - 处理 ASP.NET MVC Controller 构造函数中发生的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2694849/

相关文章:

c# - 使用 C# 在 asp.net 中设置每行的最小字符数限制

c# - 如何在 ASP MVC 的局部 View 中实现选项卡

asp.net-mvc - ASP.NET View 中的 Response.Write 是一个坏主意吗?

javascript - 在 javascript 中读取资源文件条目 - MVC 应用程序

c# - 将 URL 片段添加到 MVC ActionLink

c++ - boost 异常和线程安全 - 优于常规异常处理

java - 输入字符串而不是 int 时抛出错误

c# - asp.net v4 中循环内的异步任务

c# - 通过 ASP.NET 访问同一服务器内的文件夹

C++ 问题中的异常