Mar*_*ski 7 .net nullreferenceexception
我正在清理一些遗留代码,并且我找到了显式抛出的方法NullReferenceException
(例如:在检查类的某些属性是否为空时,或检查配置时).由于在空引用的情况下CLR抛出了这种类型的异常,对于应用程序显式抛出,这似乎是一个非常糟糕的异常选择.
我的问题是 - 对于从代码中明确抛出的异常,有什么理由NullReferenceException
可以作为一个很好的选择吗?
文档暗示您不应该从应用程序中抛出它:NullReferenceException
请注意,应用程序抛出ArgumentNullException异常,而不是此处讨论的NullReferenceException异常.
我相信我已经在其他地方看到了指导(目前找不到任何指导 - >它在这里https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/using-standard-异常类型)你应该避免抛出运行时抛出的异常类型(虽然我要链接到显示运行时抛出"应用程序"异常的东西)
如果您正在检查方法中的属性,则在继续之前,听起来您可能希望用InvalidOperationException替换它们:
如果调用方法失败是由无效参数以外的原因引起的,则使用InvalidOperationException.
处于方法调用的错误状态听起来像是符合这个定义.
不,没有理由抛出一个NullReferenceException
.
你总是有一些关于错误原因的详细信息,所以你应该把那传达信息的例外.
例如,如果您在不允许的情况下获取空引用作为参数,则可以抛出ArgumentException
或ArgumentNullException
替代.
归档时间: |
|
查看次数: |
455 次 |
最近记录: |