gpt4 book ai didi

c# - 如果您手动检测到线程错误,则抛出适当的异常

转载 作者:行者123 更新时间:2023-12-03 13:18:40 41 4
gpt4 key购买 nike

假设我编写了一些多线程 C# 代码。 (我知道......从一开始就是个坏主意;))

我有一些代码 B,我希望只有在代码 A 完成后才会调用它。我仔细编写和审查我的代码以说服自己这是真的,但我实际上无法强制执行这种期望,我只能检查它是否正确。

所以我把检查放进去,如果检查失败,我想抛出异常,这样开发人员就会收到一条大喊大叫的日志消息,上面写着“不,你搞砸了;仍然存在线程无法执行的边缘情况你说服自己它确实做到了。”

什么是最好的 C# Exception输入扔在这里?

我的直觉是选择那个老替补InvalidOperationException或者可能只是一个原始的new Exception(message) .但是如果我可以抛出一个稍微更具体的类型会很好(比如抛出 ArgumentException 当这是发生的问题时)

有几个ExceptionThread 自动完成的类型或 Sync但它们看起来都是为了解决更深层次的问题。即实际线程有问题。这里的线程都很好......这是开发人员的线程逻辑错误。

是否有任何明智的预先存在的Exception在这里使用的类?

最佳答案

一个 InvalidOperationException是最适合这种情况的内置异常。

看它是official documentation remarks section:

InvalidOperationException is used in cases when the failure to invoke a method is caused by reasons other than invalid arguments. Typically, it is thrown when the state of an object cannot support the method call.



(强调我的)。

当然,没有什么能阻止您创建自己的 Exception如果你想要更具体的东西,那么只有当你希望异常携带不适合 InvalidOperationException 的信息时才有意义。 (当然,如果您确实选择创建自己的异常类,请务必遵循 How to create user-defined exceptions 中的指南:
  • 从现有的 Exception 派生类(class)
  • 使用 Exception 这个词作为类名的后缀 ( MyVeryOwnSpecialException )
  • 至少实现三个公共(public)构造函数:
    3.a:没有参数的构造函数
    3.b:接受字符串消息的构造函数
    3.c:接受字符串消息和异常内部异常的构造函数。
  • 关于c# - 如果您手动检测到线程错误,则抛出适当的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60691111/

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