Опираясь на решение Преета Сангхи, следующее должно безопасно охватить сценарий, в котором вы работаете с большим решением с потенциалом для нескольких внутренних исключений.
try
{
object result = processClass.InvokeMethod("Create", methodArgs);
}
catch (Exception e)
{
// Here I was hoping to get an error code.
if (ExceptionContainsErrorCode(e, 10004))
{
// Execute desired actions
}
}
...
private bool ExceptionContainsErrorCode(Exception e, int ErrorCode)
{
Win32Exception winEx = e as Win32Exception;
if (winEx != null && ErrorCode == winEx.ErrorCode)
return true;
if (e.InnerException != null)
return ExceptionContainsErrorCode(e.InnerException, ErrorCode);
return false;
}
Этот код прошел модульное тестирование.
Я не буду слишком много говорить о необходимости оценить и внедрить передовой опыт, когда дело доходит до обработки исключений, путем управления каждым ожидаемым типом исключения в их собственных блоках.