【发布时间】:2017-08-20 00:59:16
【问题描述】:
想象一下这个场景:
public ActionResult MyAction(int myParam)
{
if(ModelState.IsValid)
{
// do something useful
return RedirectToAction("NextAction");
}
return RedirectToAction("Error", "Error");
}
这最终出现在黄屏死机上,而不是我的错误控制器上。我当然可以掩盖这一点,但我想在这里回归。所以,我尝试了这个:
public ActionResult MyAction(int myParam)
{
try
{
if(ModelState.IsValid)
{
// do something useful
return RedirectToAction("NextAction");
}
}
catch(Exception ex)
{
return RedirectToAction("Error", "Error");
}
}
但这不会编译,因为不是所有路径都返回一个值,即使通过该代码的任何路径都应该以 ActionResult 结束。如果您将 return 放入 finally 命令中,同样会抱怨“控制不能离开 finally 子句的主体”。
有没有更好的方法来处理这个问题,还是我必须在这个控制器操作的底部留下一个悬空的默认返回?
【问题讨论】:
-
它的意思是“并非所有路径都返回值,因为并非所有路径都返回值如果 (ModelState.IsValid) 为假怎么办?
标签: c# asp.net asp.net-mvc error-handling