2017-02-03 72 views
-2

认为我可以编写一个void函数来接受异常并输出catch块通常会执行的东西是否合理?这里是(我处理,我会做出常见的异常个体的)我的异常捕手的例子:编写一个函数来处理C#中的异常

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

这是在实践中:

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

这是处理异常的有效途径?如果这是合理的,人们会这样做吗?它似乎可以加速你的编码,而不必复制粘贴你所有的异常垃圾。谢谢你的帮助!

+0

'ex.StackTrace'很可能是你正在寻找的。 –

+0

有几个模块也可以做一些异常记录。根据你想要的日常工作,可能需要研究其中的一些。 –

回答

2

完全没有问题。事实上,添加函数来减少代码重复是明智的。然后,如果你想改变说MessageBox按钮,你只需要改变一次,而且你到处都是。

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

ArgumentNullException

出现FormatException

发生OverflowException

是Int32.Parse(字符串)抛出的异常。比方说,你知道你不会在空路过这是如何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

总是仰望,不同的是一个方法可以抛出,始终记录这些,你是捕捉并投掷你的方法。