【发布时间】:2010-06-30 19:09:32
【问题描述】:
最近,我发现自己与我的老板就我们的网络应用程序(一个 c# asp.net MVC 应用程序)中的异常处理发生了很多争论。
基本上对话是这样的:
老板:“我们的程序出了点问题,客户x的数据库今天宕机了,大家都看到了错误页面。”
我:“应用程序中的大多数页面都使用数据库来做一些事情(错误页面除外),除了显示错误页面之外没有其他合理的选择。”
老板:“我们的应用程序应该更有弹性——应用程序中不需要数据库访问的部分应该仍然可以工作。”
通常情况如此极端,但有时我们会遇到与其他服务集成的情况,我们仍然可以安全地显示页面的其他部分或完成操作,尽管有一些烦人的代码后面的代码部分需要稍后使用可能失败的操作结果。如果有很多可能的故障点,这可能会变成一些极其难以管理的代码。
一般来说,对于“正常”的 Web 应用程序(不是关键任务等),“优秀”的开发人员会花费多少时间来尝试使他们的代码有足够的弹性来处理这些情况。我的老板似乎认为代码应该能够处理几乎任何情况(你不能只捕获异常吗?)。当有很多可能的故障点时,我不明白这怎么可能是经济的。
【问题讨论】:
-
在这个经济环境中,按老板说的做。
-
数据库示例可能有点极端和过于简单化。基本上,我们有一些页面与多个 3rd 方服务交互 - 地理编码/facebook/等......在页面执行过程中可能会对给定服务进行多次调用。一个服务的结果可以稍后传递给另一个服务或用于页面的呈现。在存在许多此类服务的情况下,假设其中任何一个都可能出现故障并试图在每种情况下产生合理的输出似乎变得非常困难。
-
您的错误页面有多大用处。如果有一刻,您是最终用户,您希望看到什么?
标签: c# asp.net asp.net-mvc exception-handling