【发布时间】:2013-10-31 00:53:45
【问题描述】:
我有这个代码块:
try
{
int QuestionAnswerID = 0;
// code block which assign value to QuestionAnswerID
item.QuestionAnswerID = QuestionAnswerID;
}
catch (NullReferenceException)
{
item.QuestionAnswerID = -999;
}
这在循环中运行,并且肯定会在循环中运行 2-3 次 catch 块。这段代码完全符合我的要求,但只是想知道使用 try-catch 块处理已知问题是否是一种不好的做法。
如果我在抛出异常之前使用 if 语句来识别空值会更有效吗?
【问题讨论】:
-
try-catch 会比使用
if慢,而且使用 if 看起来比 try-catch 更干净。如果不是真正的异常,请不要使用 try-catch -
永远不要编写代码来捕获 NullReferenceException。它们表明您的程序中存在错误。改为修复错误。
-
并且在 catch 你设置
item.QuestionAnswerID如果项目是null怎么办? -
这里唯一可能出现的
NullreferenceExcpetion'是item为空,所以会在catch块中再次抛出。 -
如果您知道为什么您可能会创建并尝试使用空引用,那么您应该在此时检查并处理。如果你不知道为什么,只是用一个 catch 块来修复症状,那么你最好尝试找到问题的根源。