在C#中组织自定义异常

时间:2012-10-08 21:52:38

标签: c# custom-exceptions

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

如何组织自定义例外的最佳做法是什么?

例如,我有一个类Disk,它会抛出InvalidDiskExceptionDisk是唯一抛出此异常的类。

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

Disk.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.
        //
    }
}

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

2 个答案:

答案 0 :(得分:0)

我在{MyNamespace} .Exceptions

中定义了自定义异常

答案 1 :(得分:-2)

自定义异常,恕我直言,应该在他们自己的独立集会中,原因很简单:如果你最终将它们抛到进程/机器边界,那么所涉及的每个进程都可能会遇到问题(因此如果他们不这样做) t分享对自定义例外的共同理解。