【问题标题】:Writing a function to handle exceptions in C# [closed]在 C# 中编写一个处理异常的函数 [关闭]
【发布时间】:2017-02-03 19:07:30
【问题描述】:

认为我可以编写一个 void 函数来接收异常并输出 catch 块通常会输出的东西是否合理?这是我的异常捕获器的一个示例(我会为我处理的常见异常创建单独的捕获器):

private void exCatch(Exception ex)
{
    MessageBox.Show("ERROR - " + blah blah blah + ex.ToString(), blah blah);
}

这是在实践中:

try
{
    stuff
}
catch (Exception e)
{
    exCatch(e);
}

这是处理异常的有效方法吗?如果这是合理的,人们会这样做吗?似乎它可以加快您的编码速度,而不必一遍又一遍地复制粘贴所有异常垃圾。感谢您的帮助!

【问题讨论】:

  • ex.StackTrace 可能是您要找的。​​span>
  • 有一些模块也可以做一些异常记录。根据您对日常工作的要求,可能值得研究其中的一些。

标签: c# exception exception-handling try-catch


【解决方案1】:

完全没有问题。事实上,添加函数来减少代码重复是绝对可取的。然后,如果您想更改 MessageBox 按钮,只需更改一次即可。

需要注意的是,您应该只考虑捕获您预期的某些类型的异常。如果您正在捕获异常,那应该是因为您知道它来自哪里以及如何处理它。否则,您可能会捕捉到应该在更高级别处理的内容,并且您的应用程序可能会进入无效状态。这是一个例子。

ArgumentNullException

格式异常

溢出异常

是 Int32.Parse(string) 抛出的异常。假设您知道您不会传入 Null,这是 MSDN 显示您应该处理该函数的方式:

using System;

public class Example
{
   public static void Main()
   {
       string[] values = { "+13230", "-0", "1,390,146", "$190,235,421,127",
                      "0xFA1B", "163042", "-10", "007", "2147483647", 
                      "2147483648", "16e07", "134985.0", "-12034",
                      "-2147483648", "-2147483649" };
  foreach (string value in values)
  {
     try {
        int number = Int32.Parse(value); 
        Console.WriteLine("{0} --> {1}", value, number);
     }
     catch (FormatException) {
        Console.WriteLine("{0}: Bad Format", value);
     }   
     catch (OverflowException) {
        Console.WriteLine("{0}: Overflow", value);   
     }  
       }
    }
 }

https://msdn.microsoft.com/en-us/library/b3h1hf19(v=vs.110).aspx

始终查找方法可以抛出的异常,并始终记录您在方法中捕获和抛出的异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多