我们可以在一个类中抛出异常吗?我们可以在c#的单独异常类中捕获所有这些异常吗?
现在我的问题是,当值== null时,我们就会在那里显示消息。现在,如果值等于null,我必须使用异常。 我可以抛出像
这样的异常if(customer == null)
throw new CustomerNullException();
if(incometype == null)
throw new IncomeTypeNullException();
现在我可以在一个单独的类中处理这些异常吗?
答案 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类的操作,以便在数据结构为空时执行任何操作。