c# - 我应该抛出哪个异常来表示程序中的内部错误?

标签 c# .net exception

当程序达到我“知道”不会发生的逻辑状态时,我应该使用哪个异常?如果发生了,那就是非常糟糕的事情?

例如:

int SomeFunction(int arg) {
    SomeEnum x = Whatever(arg, somePrivateMember);
    switch (x) {
        case SomeEnum.Value1:
            return SomeFunction1();
        case SomeEnum.Value1:
            return SomeFunction2();
        default:
            throw new WhatTypeToThrow();
    }
}

显然,ArgumentException 在这里是不可能的,因为 x 的无效值可能来自 Whatever() 中的错误,或者任何参数和/或当前实例状态的无效组合。

我正在寻找诸如 InvalidProgramStateException、InternalErrorException 或类似的东西。

当然我可以自己定义,但我想知道框架中是否有合适的异常。

编辑:删除了简单示例代码以减少 ArgumentException 答案的数量。

最佳答案

InvalidOperationException 呢?

关于c# - 我应该抛出哪个异常来表示程序中的内部错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3313906/

相关文章:

c# - 拖动箭头断点时调试范围内的错误

c# - 在 Windows 7 上安装 C# Windows 服务

c# - CallerMemberNameAttribute是否使用反射

android - (XYZ)帐户未链接到YouTube帐户:Android中的YoutTubeException

c# - 来自具有特定延迟的线程的方法调用

c# - 在返回给客户端之前修改 JSON 的通用方法

.net - 用于删除由有序字符集组成的嵌套括号的平衡匹配正则表达式是什么?

java - 为 URLDecoder.decode() 抛出 UnsupportedEncodingException 的示例字符串

java - Reset Exception,有这种事吗?

c# - 创建要在 C# 中编码的 C++ Dll 的最佳实践