ThrowExceptionForHR + GetHRForLastWin32Error 与 Win32Exception

ThrowExceptionForHR + GetHRForLastWin32Error vs Win32Exception

这些调用是否等价?

它们不等价。

  • Marshal.ThrowExceptionForHR(Marshal.GetHRForLastWin32Error()) 引发 COM 异常。这可能是 System.Runtime.InteropServices.COMException 或适用于 Win32 错误代码的异常。
  • throw new Win32Exception() 引发 Win32 异常,System.ComponentModel.Win32Exception