You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

视图中Try-Catch结果处理:如何在视图展示异常信息

解决方案:在视图中展示异常信息并保留原有提示

方案一:当前搜索页内直接展示(无需跳转,适合快速实现)

你用Console.WriteLine无效是因为它只输出到服务器控制台/日志,完全不会在前端页面显示;而原代码里的RedirectToAction会导致当前请求的上下文丢失,没法直接把异常信息传到目标视图。

修改控制器代码,不要跳转,直接返回当前搜索视图,用ViewData传递原有提示和异常信息:

try
{
    return Ok(await _service.GetInformation(ID)); // 注意原代码里的`string ID`语法错误,要去掉string
}
catch (Exception ex)
{
    _logger.Log(LogLevel.Critical, ex.GetExceptionDetails());
    // 传递左右侧需要展示的内容
    ViewData["LeftTip"] = "No data found with the parameters given";
    ViewData["RightError"] = ex.Message; // 也可以用ex.GetExceptionDetails()获取更详细的异常信息
    return View(); // 返回当前搜索视图,而非跳转
}

在对应的.cshtml视图里按布局渲染:

<div class="row">
    <div class="col-md-6">
        <p>@ViewData["LeftTip"]</p>
    </div>
    <div class="col-md-6">
        <p class="text-danger">@ViewData["RightError"]</p>
    </div>
</div>

方案二:自定义全局错误页(适合统一错误风格,长期维护)

如果你的项目需要全局统一的错误展示规范,自定义错误页是更合适的选择,也符合MVC的错误处理流程。

1. 创建自定义错误视图

在Views/Shared目录下新建Error.cshtml:

@model Microsoft.AspNetCore.Mvc.ViewFeatures.IExceptionHandlerPathFeature
<div class="row">
    <div class="col-md-6">
        <p>@TempData["LeftTip"]</p>
    </div>
    <div class="col-md-6">
        <p class="text-danger">@Model?.Error.Message</p>
    </div>
</div>

2. 配置全局异常处理(Program.cs)

添加全局异常捕获中间件:

app.UseExceptionHandler("/Home/Error");

3. 修改HomeController的Error方法

public IActionResult Error()
{
    var exceptionFeature = HttpContext.Features.Get<IExceptionHandlerPathFeature>();
    return View(exceptionFeature);
}

4. 调整原控制器的Catch块

因为重定向是跨请求,ViewData会失效,改用TempData传递左侧提示,然后抛出异常让全局中间件捕获:

try
{
    return Ok(await _service.GetInformation(ID));
}
catch (Exception ex)
{
    _logger.Log(LogLevel.Critical, ex.GetExceptionDetails());
    TempData["LeftTip"] = "No data found with the parameters given";
    throw; // 抛出异常触发全局错误处理
}

关键提醒

  • Web场景下绝对不要用Console.WriteLine展示前端错误,它只作用于服务器端。
  • 跨请求传递数据要用TempData,ViewData仅在当前请求有效。
  • 若只是搜索功能单独的错误展示,方案一更高效;若需要全项目统一错误页,方案二更利于后续维护。

内容的提问来源于stack exchange,提问作者I.M.Groot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 00:46:18