在try块中抛出异常有什么问题吗?

Use*_*er1 6 c#

try-catch如下编码块是一种很好的设计实践吗?也就是说,throw在try块中使用a 然后在catch块中捕获它.

try
{
  if (someCondition){

      throw new Exception("Go the the associated catch block!");

     }
}

catch(Exception ex)
{
      logError("I was thrown in the try block above");
}
Run Code Online (Sandbox Code Playgroud)

byt*_*e77 2

一般来说,如果它是最短的可写方法,那么它的设计还不错。但请注意,抛出异常通常需要大约 1 毫秒才能捕获。在这方面,这是一个性能问题。

  • 昂贵的不是投掷。它构建“Throwable”的成本很高,因为这涉及捕获堆栈。如果您可以避免该步骤,例如通过预先分配异常并在多个抛出之间共享它,那么它是非常有效的。 (3认同)