在前一个关于异常的问题的后续内容中,在.NET中创建自定义异常的最佳实践是什么?
更具体地说,您应该继承System.Exception,System.ApplicationException还是其他一些基本异常?
我听说你永远不应该抛出一个字符串,因为缺少信息,你会发现你不希望捕获的异常.抛出异常有什么好的做法?你继承了一个基本的异常类吗?你有很多例外或很少吗?你做MyExceptionClass&或const MyExceptionClass&?此外,我知道永远不应该在析构函数中抛出异常
我将补充说,我理解设计合同以及何时抛出异常.我问我应该如何抛出异常.
我有一些代码
try
{
result.FirstName = nodes[myIdx].Attributes["ows_FirstName"].Value;
} catch { }
Run Code Online (Sandbox Code Playgroud)
如果我正在寻找的属性存在(Good ol sharepoint),我现在不知道在调用此调用之前.
因此,我可以编写我想要创建的代码的唯一线性方式就是这样.
try
{
result.FirstName = nodes[myIdx].Attributes["ows_FirstName"].Value;
} catch { }
try
{
result.LastName = nodes[myIdx].Attributes["ows_LastName"].Value;
} catch { }
....
Run Code Online (Sandbox Code Playgroud)
现在我没有使用此代码的catch部分,最终得到了大量完全冗余的行.
为什么我不能这样做
try { result.FirstName = nodes[myIdx].Attributes["ows_FirstName"].Value; }
Run Code Online (Sandbox Code Playgroud)
那么为什么我们明确被迫声明一个catch块,即使它没有被处理?我确信有充分的理由,但无法解决.
编辑:在每个人开始对我说,吞下一个例外是不好的,等等等等等等.我们(和我)都知道这些论点,但在这个(和许多)现实世界场景中,没有什么特别的例外,我无法做(或需要做)来修复行为.