由于内部错误,Exception对象是否可能引发另一个异常?

xpo*_*ort 5 c#

由于内部错误,Exception对象是否可能引发另一个异常?

假设在try-catch中我们实例化Exception对象,是否有可能实例化引发另一个异常?如果是的话,我们必须无限地嵌套看起来很有趣的try-catch块.

Ode*_*ded 3

简而言之,答案是肯定的,有可能。

例如,如果异常类需要将一个大对象初始化为字段,但没有足够的内存来分配它,您将得到一个异常对象,该对象会抛出OutOfMemoryException.

异常与任何其他类一样,本身也可以引发异常。语言中没有任何内容不允许这样做。

然而,我想说,从异常类中抛出异常是一种不好的做法,通常应该避免。


更新:(以下更新的问题)

如果您在块中实例化异常对象trycatch则会捕获它(假设它捕获适当类型的异常)。如果您在块中实例化它catch,您可能希望在嵌套中执行此操作try{}catch{}- 这对于在 catch 块中使用的可能引发异常的代码来说是很正常的。

正如其他人所说 - 一些异常不应该被捕获(例如OutOfMemory或意外StackOverflow),因为你没有办法处理它们。