How to get Exception Error Code in C#

前端 未结 5 1159
心在旅途
心在旅途 2020-11-30 08:57
try
{
     object result = processClass.InvokeMethod(\"Create\", methodArgs);
}
catch (Exception e)
{  
    // Here I was hoping to get an error code.
}
5条回答
  •  -上瘾入骨i
    2020-11-30 09:06

    You can use this to check the exception and the inner exception for a Win32Exception derived exception.

    catch (Exception e) {  
        var w32ex = e as Win32Exception;
        if(w32ex == null) {
            w32ex = e.InnerException as Win32Exception;
        }    
        if(w32ex != null) {
            int code =  w32ex.ErrorCode;
            // do stuff
        }    
        // do other stuff   
    }
    

    Starting with C# 6, when can be used in a catch statement to specify a condition that must be true for the handler for a specific exception to execute.

    catch (Win32Exception ex) when (ex.InnerException is Win32Exception) {
        var w32ex = (Win32Exception)ex.InnerException;
        var code =  w32ex.ErrorCode;
    }
    

    As in the comments, you really need to see what exception is actually being thrown to understand what you can do, and in which case a specific catch is preferred over just catching Exception. Something like:

      catch (BlahBlahException ex) {  
          // do stuff   
      }
    

    Also System.Exception has a HRESULT

     catch (Exception ex) {  
         var code = ex.HResult;
     }
    

    However, it's only available from .NET 4.5 upwards.

提交回复
热议问题