将错误消息处理为异常

时间:2013-08-28 14:07:07

标签: c# exception exception-handling

我们可以在一个类中抛出异常吗?我们可以在c#的单独异常类中捕获所有这些异常吗?

现在我的问题是,当值== null时,我们就会在那里显示消息。现在,如果值等于null,我必须使用异常。 我可以抛出像

这样的异常
if(customer == null)
        throw new CustomerNullException();
if(incometype == null)
        throw new IncomeTypeNullException();

现在我可以在一个单独的类中处理这些异常吗?

3 个答案:

答案 0 :(得分:0)

你不应该抛出异常作为常规流程。特别是如果你知道它在哪里以及为什么会发生。在你的情况下,我将创建一个名为HandleProblems的类,并将错误发送到该类。不需要抛出异常并捕获它,因为它比调用方法更昂贵。

   public class Log
   {
      public static void WriteLine(string errorMsg)
      {
         string err = DateTime.Now.ToString("dd/MM/yyyy hh:mm") + " - " + errorMsg;

         if (File.Exists("@d:\log.txt") == false)
         {
            File.Create("@d:\log.txt");
         }

         using(StreamWriter writer = new StreamWriter("@d:\log.txt", true))
         {
            writer.WriteLine(err);
         }
      }
   }

答案 1 :(得分:0)

异常是处理错误的坏主意。您应该重新考虑错误处理架构,因为异常会产生巨大的开销。请阅读Jon Skeet撰写的Exceptions and Performance

答案 2 :(得分:0)

只有特殊情况才能保存例外(haw haw haw)。由于异常保存和传递的元数据(包括堆栈跟踪),它们的性能非常高。因此,虽然他们必须调试,捕获并处理您通常不会遇到的错误(但应该做好准备,例如,如果参数传递为null,'应该'永远不会为null),他们不适合计划的正常运作。

如果您希望在正常程序运行中出现特殊错误情况,请在外部使用您自己的错误处理程序类,将所需的错误参数传递给,或使用某种验证。在空数据结构上执行myCollection.pop之类的操作不需要抛出异常,因为(无论出于何种原因)您的程序可能无法检查集合是否为空。但是它可以执行类似返回Null和调用errorHandler类的操作,以便在数据结构为空时执行任何操作。