加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在C#中使用异常导致类型不匹配

发布时间:2020-12-15 04:12:11 所属栏目:百科 来源:网络整理
导读:我正在实现一个IDictionary接口,它具有get set的参数对象. object this [object key] { get; set; } 我想强制键成为字符串类型,所以在我的代码中我做: (if key.GetType() != typeof(string)) { //} 我想在发生这种情况时抛出异常.但是我不知道在这种情况下
我正在实现一个IDictionary接口,它具有get set的参数对象.
object this [object key] { get; set; }

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

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

我想在发生这种情况时抛出异常.但是我不知道在这种情况下使用什么最合适的例外.我能找到的最接近的是TypeInitializationException和ArgumentException.但是,在document中声明:“如果将错误的参数传递给成员,则抛出System.ArgumentException或其子类型之一”,这让我想知道我的是否是正确的用例.

我该怎么用我的情况?我应该使用Assert而不是抛出异常吗?

解决方法

ArgumentException是正确的异常.整个BCL都使用它,所以你应该这样做. TypeInitializationException根本不适合.它只有一个用例:抛出静态ctor.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读