gpt4 book ai didi

c# - 当方法返回无效结果时我应该抛出什么异常

转载 作者:太空狗 更新时间:2023-10-30 00:31:26 25 4
gpt4 key购买 nike

我想知道当被调用的方法返回意外结果时我应该抛出什么异常(.NET 中是否有异常)。

例如,想象一下我有工厂的情况:

public abstract class Factory
{
public A Create()
{
var a = new A();
var b = CreateDependencyOfA();
a.Something = b.Property;
}

protected abstract B CreateDependencyOfA();
}

我记录了该类并假设 CreateDependencyOfA 不返回 null(或其他任何东西,即假设值介于 1 和 5 之间的整数)。

当实现违反这个契约时我应该怎么做(在这种情况下返回 null)。 .NET 中是否有任何为此目的设计的异常类型?我知道有一些 ArgumentExceptions,但据我所知,它们用于输入参数。是否有等效的输出参数?

我问这个是因为我相信输入和输出参数之间存在某种对称性,但我不知道输出有任何异常(exception)情况。

最佳答案

如果一个方法返回了一个它不应该返回的值,这意味着你的程序中存在内部逻辑错误。这种错误(即,如果代码是按照规范设计的,则绝不能发生的情况)最好由 assertions 处理。 :

var dependency = Factory.CreateDependencyOfA();
Debug.Assert(dependency != null, "Factory returned null dependency.");

注意:断言的使用假定您正在检查您自己的方法的输出。换句话说,您拥有 Factory 及其所有实现,您编写了所有 CreateDependencyOfA 方法,并且您知道这些方法不得返回 null.

如果 Factory 的实现是由其他人编写的插件,则不应使用断言。相反,使用 InvalidOperationException指示当前状态(即提供给您的 Factory 实现)无效。

关于c# - 当方法返回无效结果时我应该抛出什么异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26170310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com