c# - 在 C# 中使用类型不匹配异常

标签 c# exception

我正在实现一个 IDictionary 接口(interface),它的 get set 有参数 object

object this [object key] { get; set; }

我想强制 key 为字符串类型,所以在我的代码中我这样做:

(if key.GetType() != typeof(string)) {
    //
}

我想在发生这种情况时抛出异常。但是我不知道在这种情况下使用什么最合适的异常(exception)。我能找到的最接近的是 TypeInitializationExceptionArgumentException。但是,在这个 document 中有说明:“如果将错误的参数传递给成员,请抛出 System.ArgumentException 或其子类型之一”,这让我想知道我的用例是否适合它。

我应该如何使用我的箱子?我应该使用 Assert 而不是抛出异常吗?

最佳答案

ArgumentException 是正确的异常。整个 BCL 都在使用它,您也应该使用它。 TypeInitializationException 根本不适合。它只有一个用例:一个 throwing static ctor。

就是说,如果您不生成库(只是内部代码),那么如果有充分的理由,您可以偏离该约定。如果您想使用 Debug.Assert 或其他替代方案,请随意使用。

关于c# - 在 C# 中使用类型不匹配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18390550/

相关文章:

c# - 在 Windows 服务中处理 AppDomain.CurrentDomain.UnhandledException

c++ - 在自定义 C++ 异常类中消失的字符串

c# - 如果未处理异常则发出警告

c# - 如何将动画 gif 添加到按钮?

c# - 有时连接 CRUD 应用程序 DAL

c# - 每个客户端的 WCF CPU 使用率增加 25%

.net - 使用Elmah编程地记录错误:记录特定信息

c# - 通过id识别系统操作系统

c# - 哪个代码更具可读性?

c++ - 为什么会发生此编译器错误?