2016-05-18 14 views
0

Ich baue eine Website. Ich bin vor Problem mit verschiedenen Fehlern wie 404 zu werfen und 500.Wie kann ich 404 Fehler und 500 Fehler in C# unterscheiden?

 try 
     { 
      //logic comes here 
     } 
     catch(HttpException he) 
     { 
      throw he; 
     } 

Jetzt 404 und 500 beide unter Httpexception kommen. Aber es gibt eine andere benutzerdefinierte Logik für beide Typen. Wie könnte ich Beide unterscheiden, so dass ich zwei Catch-Blöcke schreiben könnte?

+2

Wenn Sie C# 6 verwenden, können Sie [Ausnahmefilterung] (http://geekswithblogs.net/BlackRabbitCoder/archive/2015/04/09/c.net-little-wonders-exception-filtering-in-c) verwenden -6.aspx). Andernfalls müssen Sie einen Haken haben und eine if-Anweisung haben. – Rob

Antwort

1

Unter der Annahme, C# 6 können Sie Verwenden Sie exception filters, um die Übergabe in verschiedene Catch-Blöcke aufzuteilen, je nach Statuscode:

try 
{ 
    // ... 
} 
catch (HttpException ex) when (ex.StatusCode == 404) 
{ 
    // ... 
} 
catch (HttpException ex) when (ex.StatusCode == 500) 
{ 
    // ... 
} 
1

Sie können dies einfach tun:

try 
{ 
    //logic comes here 
} 
catch (WebException e) 
{ 
    var code = ((HttpWebResponse)e.Response).StatusCode; 
    if(code == HttpStatusCode.BadRequest) 
    { 
     //some logic1 
    } 
    if(code == HttpStatusCode.InternalServerError) 
    { 
     //some logic2 
    } 
} 
+0

Ich möchte zwei Catch-Blöcke schreiben. Wie kann ich? –

+0

Ich denke, es gibt keine speziellen Fehlertypen für 400 und 500 Fehler, daher sollten Sie den einzigen catch Block verwenden und dann Fehler verarbeiten, abhängig von 'StatusCode', wie in meiner Antwort gezeigt. –

+0

Danke, Slava Utesinov –