.NET应该选择支持抽象方法中的“已检查异常”吗?

时间:2010-12-22 22:20:50

标签: .net

.NET是否应该为程序员提供可选为抽象方法定义一组“已检查异常”的能力,或可选一般?

我理解检查异常的原因不是.NET的一部分,我不希望语​​言范围内没有强制检查异常,但为什么不提供在某些情况下有用的可选语法?请参考以下示例,或者如果您只是想指定某些代码处理某些异常:

public abstract class AbClass
{
    public abstract ISomeInterface AbMethod() throws AbMethodException;

    public void LargerMethod()
    {
        // some processing

        try
        {
            ISomeInterface data = AbMethod();
        }
        catch(AbMethodException ex)
        {
            // some special code
        }

        // some more processing
    }
}

现在需要AbMethod()的实现来抛出AbMethodException。

public class MyAbClass : AbClass
{
    public ISomeInterface AbMethod() throws AbMethodException
    {
        // attempt to create data
        if(dataAlreadyExists)
        {
            throw new AbMethodException();
        }
        else
        {
            // create data
            ISomeInterface obj = (ISomeInterface)(new object());
            obj.WriteData();

            return obj;
        }
    }
}

这会对您有用吗?想法?

1 个答案:

答案 0 :(得分:2)

如果你的一个接口方法的正确实现是为了解决NotImplementedException,那么这可能会失败。在这种情况下,添加“已检查的异常”只会阻止需要的人实现该接口的能力。