为何无法在catch代码块中调用返回错误页的方法?
问题分析与解决办法
这个问题我之前也碰到过,核心原因其实很简单——你在catch块里只是调用了Error()方法,但没有把它的返回值作为控制器方法的结果返回给ASP.NET Core框架处理,所以这个错误页的IActionResult根本不会被执行,自然看不到错误页跳转。
修正步骤
- 先确保你的控制器方法返回类型是
IActionResult(或者ActionResult这类兼容类型),这样才能返回错误页的视图结果。 - 在catch块中,必须用
return关键字返回Error()方法的结果,而不是仅仅调用它。
修正后的代码示例
try { pt1 = arr[1]; pt2 = arr[2]; } catch (IndexOutOfRangeException e) { ce.StackTrace = e.StackTrace; return Error(); // 关键:加上return,让框架处理这个错误页结果 }
额外注意事项
- 如果你的
Error()方法需要接收自定义错误模型(比如你定义的ce),请确保方法参数匹配,然后传入模型:// 假设Error方法的定义如下 public IActionResult Error(CustomError errorModel) { return View("ErrorPage", errorModel); } // catch块中调用时 return Error(ce); - 确认
Error()方法内部逻辑正确:比如它确实返回了对应错误视图的ViewResult,且.cshtml视图文件存在于正确路径下(默认是Views/Shared/Error.cshtml或者对应控制器的Views目录)。
内容的提问来源于stack exchange,提问作者Parth Shekokar
相关产品推荐
相关产品推荐

