例外と、COM 呼び出し元に制御を返すことについて質問があります。以下は、カスタム例外クラスを使用したテスト問題です。違いは何ですか
Marshal.ThrowExceptionForHR(CustomException.COR_E_ARGUMENT);
と
throw new CustomException("Argument is out of bounds");
1) と 2 が int と Exception-object を返すため機能しない理由がわかりました。しかし、3と4の違いは何ですか?
public class CustomException : ApplicationException
{
public static int COR_E_ARGUMENT = unchecked((int)0x80070057);
public CustomException(string msg)
: base(msg)
{
HResult = COR_E_ARGUMENT;
}
}
CustomException クラスを使用して制御を COM 呼び出し元にすぐに返すコード セグメントを記述する必要があります。また、呼び出し元がエラー コードにアクセスできることを確認する必要があります。どのコード セグメントを使用する必要がありますか?
- return Marshal.GetExceptionForHR(CustomException.COR_E_ARGUMENT);
- CustomException.COR_E_ARGUMENT を返します。
- Marshal.ThrowExceptionForHR(CustomException.COR_E_ARGUMENT);
- throw new CustomException("引数が範囲外です"); // 正解