当使用C# .Net进行编程时,有什么函数几乎总是抛出异常是“坏主意”呢?
在C++中,从析构函数中抛出异常很少是一个好主意,因为它通常会导致程序终止。在C# .Net中有类似的情况吗?我不感兴趣的情况下,例外只是被认为是不好的风格。我要找的地方,抛出一个例外往往会导致严重的问题。
发布于 2021-02-10 15:37:56
微软的“设计规则”( Design CA1065 )涵盖了这一点(不要在意外位置引发异常),该规则声明:
不希望抛出异常的方法可分为以下几类:
发布于 2021-02-10 15:09:12
发布于 2021-02-11 14:10:05
除了提到的其他地方之外,我还要添加async void
方法,特别是在第一个await
之后。这里的问题是,如果等待需要重新安排时间,那么任何从方法中产生气泡的例外情况都可能落在意想不到的位置。例如:如果您在等待使用.ConfigureAwait(false)
,或者如果async void
方法是从后台线程调用的,那么该异常将在线程池中落地,其直接路径将变为不可处理。
话虽如此,但我认为使用async void
是合理的,而且如果异常从其中冒出来,那么您可能已经太晚了,无法正确处理异常。
https://stackoverflow.com/questions/66146408
复制相似问题