【问题标题】:Can I use this simple try catch syntax? [closed]我可以使用这个简单的 try catch 语法吗? [关闭]
【发布时间】:2019-04-09 06:28:07
【问题描述】:

我正在使用 asp.net mvc 5。

我用过:

try
{
   // some code of any type
}
catch (Exception e)
{
    ViewBag.error = e.Message;
}

我没有使用 throw 关键字,我只想在视图中显示错误。

我的语法正确吗?

谢谢。

【问题讨论】:

  • 您是否遇到任何错误?我不明白问题是什么
  • 您是否应该捕获所有可能的异常并丢弃除消息之外的所有信息,当然,这是一个完全不同的问题。
  • 除了在ViewBag.error = e.Message 末尾缺少; 之外,我没有看到任何错误。
  • 现在您有一个非常技术性的错误消息,它可能是不完整的,因为您没有捕获任何内部异常。现在,您将如何处理此消息?向您的用户展示它?您应该记录它、采取对策或显示用户友好的消息。
  • 好的,谢谢@Peter Bons。

标签: c# asp.net-mvc exception try-catch


【解决方案1】:

是的,您可以将其用于异常处理。

另外,您可以定义不同类型的异常来动态处理异常

下面是我们如何在 CSHTML 中访问它的代码。

@if (ViewBag.Error != null)
{
    <h3 style="color:red">@ViewBag.Error</h3>
}

【讨论】:

    【解决方案2】:

    您通常不应该像这样捕获任何类型的exception。这可能会导致您的程序进入未定义状态。您应该使其更具体,例如仅捕获 SocketExceptions。是的,如果出现未处理的异常,这可能会导致您的程序崩溃,但是必须重新启动应用程序的用户可能不如导致系统损坏的应用程序糟糕,因为它做了不应该做的事情。 想象一下,您有一个函数可以构建一个字符串,该字符串是一个目录的路径。你得到一个解析异常,现在你的程序将删除......什么?你不能确定。但是,如果您在 catch 中专门处理了解析异常,则可以确定您对这种情况做出了正确的反应

    try
    {
       //some some SocketStuff
    }
    catch (SocketException e)
    {
        //cancel network operation
    }
    catch (ParseException e)
    {
        //use default string
    }
    

    仅当您知道其中的代码根本不会造成任何损害时,才应使用您捕获任何类型的Exception 的方法,例如,从长远来看不会导致严重问题的 GUI 相关代码.

    【讨论】:

    • 好答案。我会用它。谢谢
    • @HosseinBabaei 如果这回答了您的问题,请将其标记为其他人找到的答案
    • 好的。你能解释一下 catch 部分中 (throw) 关键字的用法吗?谢谢。 @丹尼斯沙夫
    【解决方案3】:

    是的!这个语法是正确的。您可以使用以下代码在页面中显示错误。

    @if (ViewBag.Error != null)
    {
       <h4 style="color:#e74c3c">@ViewBag.Error</h4>
    }
    

    【讨论】:

      猜你喜欢
      • 2013-02-08
      • 2011-11-19
      • 1970-01-01
      • 2022-07-11
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      相关资源
      最近更新 更多