3
- 异常表示单条信息。
- 例外的是(或应该)通过在应用生命周期的定义很少发生这样装箱,拆箱和复制不是问题,我认为。
- 例外几乎总是走出去的范围从创建它们在哪里,所以是具有参考存储的地方使它很好的候选人晋升为下一个GC代异常的风险,而结构更易于清理。
- 不可改变的结构是线程安全的。
你永远不希望异常为空(甚至是编译器或CLR力这一点,尝试做什么下文):为什么异常是一个类,而不是结构?
throw null;
那么,你会得到:
NullReferenceException
有什么特殊原因为什么异常是类?
“”你永远都不想例外是空'Exception.InnerException可以检查空。结构需要分配到堆栈中,但在堆栈溢出的情况下将分配什么?另外''Structs可以实现一个接口,但是他们不能从另一个结构继承''作为doc说的 – oleksa
许多答案,但非常重要的一点是你不能拥有一个结构层次结构 - 而Exceptions层次结构是非常重要的,是'catch'工作方式的基础(也就是说,你可以捕获从大多数到最少派生的异常以处理一般情况之前的特定情况)。 –
@oleksa你是完全正确的。继承是将异常作为类的重要参数。 – Creo