使用嵌套类来组织异常

时间:2017-09-28 12:19:29

标签: c# class exception

在组织代码时执行以下操作是否有任何问题 - 特别是异常?

public class QueryParameterException
{
    public class BooleanArgumentException : ArgumentException
    {
        public BooleanArgumentException(string message)
            : base(message)
        {
        }
    }

    public class DoubleArgumentException : ArgumentException
    {
        public DoubleArgumentException(string message)
            : base(message)
        {
        }
    }

    public class IntArgumentException : ArgumentException
    {
        public IntArgumentException(string message)
            : base(message)
        {
        }
    }
}

并像这样引用它们:

throw new QueryParameterException.BooleanArgumentException($"invalid argument '{queryStringValue}' for boolean parameter '{key}' should be 'true' or 'false'");

原因不重复 - 继承无关。

1 个答案:

答案 0 :(得分:1)

我看到两个问题。

首先,如果你在一个类中嵌套而不是使用命名空间,它似乎工作相同,除非你不能将外部类名移动到using语句,如果你要多次引用它。您每次都必须使用完整的外部和内部类名。

第二是主观的。一些未来的开发人员可能会花费额外的30秒左右来试图找出正在发生的事情。他/她可能会看到

throw new QueryParameterException.BooleanArgumentException($"...");

并且觉得需要查看QueryParameterExceptionBooleanArgumentException的声明,即使它与他当前的任务无关。

当他到达那里时,他会确认这些只是嵌套类,而且没关系。没什么大不了的,回到当前的任务。但是他仍然会抓挠他的脑袋并想知道为什么这样做了。即使它有效,使用类作为命名空间也是不寻常的。一旦他意识到有人做了一些奇怪的事情,没有明显的理由他对代码的信心会稍微受到侵蚀(可能只有3%)而且他会花更多的时间来检查他可能不需要检查的事情。确定没有什么奇怪的事情发生。