接下来, 总是有一个与CLR内部异常关联的HRESULT。有时, 与HRException一样, 该值来自某个com源, 但内部错误和Win32 API故障也有HRESULTS。...通常,所有的异常分类是根据异常的HRESULT:
HRESULT hr = GET_EXCEPTION()->GetHR();
通过托管异常对象便于获得更多信息。...有一些十分复杂的代码来确定异常种类对应的特定HRESULT。...外部代码可能导致异常的情况。这一个问题的原因来自于 EX_TRY 宏的实现, 特别是它们如何将非异常转换或包装为异常。...捕获exception* 时, 宏要检查异常对象, 但在捕获其他内容时, 没有任何要检查的内容, 宏必须猜测实际的异常是什么。但是当异常来自于运行时的外部时, 宏总是会猜测错误。