11

我正在创建一个 C# 应用程序,并尝试在适当的时候利用自定义异常。我在这里查看了其他问题和 MSDN 设计指南,但没有遇到任何像我在这里想知道的那样具体的问题。

如何组织自定义异常的最佳实践是什么?

例如,我有一个Disk抛出InvalidDiskException. Disk是唯一抛出此异常的类。

目前,我将异常嵌套在 Disk.cs 文件中,如下所示:

磁盘.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OrganizingExceptionsInCSharp
{
    class Disk
    {
        [Serializable]
        public class InvalidDiskException : Exception
        {
            public InvalidDiskException() { }
            public InvalidDiskException(string message) : base(message) { }
            public InvalidDiskException(string message, Exception innerException) : base(message, innerException) { }
        }

        //
        // Code that throws the exception.
        //
    }
}

是否应该将异常定义在与 Disk 相同的级别(即不嵌套在其中)?异常是否应该嵌套在磁盘中但保留它自己的部分文件?可能还有其他更好的选择吗?如果还有其他我没有想到的考虑因素,请告诉我。

4

3 回答 3

1

我会在 {MyNamespace}.Exceptions 中定义我的自定义异常

于 2014-02-14T13:03:36.087 回答
0

恕我直言,自定义异常应该在它们自己的独立程序集中,原因很简单:如果你最终将它们扔到进程/机器边界,如果它们不共享一个涉及的每个进程可能会遇到问题(因此会遇到另一个异常)对自定义异常的共同理解。

于 2012-10-08T22:23:42.293 回答
0

我建议为每个自定义异常设置一个文件/类,并将这些文件/类放在名为 CustomException 的项目子文件夹中。

于 2022-01-05T01:17:03.720 回答