2016-10-10 9 views
0

Ich verstehe nicht warum, aber ich erhalte Flurl Exceptions und diese werden nicht durch den try/catch Block abgefangen. Irgendwelche Ideen, warum das passiert?Flurl-Ausnahme wird nicht abgefangen

Hier ist der Code:

try 
{ 
    var x = await Utils.Sales.GetUrl() 
     .PostJsonAsync(new Sale 
     { 
      MerchantId = Constants.Sandbox.MerchantId 
     }) 
     .ReceiveJson<Sale>(); 
    var b = x; 
} 
catch (FlurlHttpTimeoutException) 
{ 
    //LogError("Timed out!"); //todo: 
} 
catch (FlurlHttpException ex) 
{ 
    var x = ex.Message; 
    //todo: 
    //if (ex.Call.Response != null) 
    // LogError("Failed with response code " + call.Response.StatusCode); 
    //else 
    // LogError("Totally failed before getting a response! " + ex.Message); 
} 
catch (Exception ex) 
{ 
    var a = ex.Message; 
} 

Hier ist der Ausgang (der einzige Grund, warum ich weiß, dass die Ausnahme ausgelöst wird):

enter image description here

+0

Vielleicht ist es in der Bibliothek oder der Methode gefangen Sie anrufen? –

+0

@MehrzadChehraz Es tut mir leid, aber ich konnte es nicht verstehen ... Schlägst du vor, dass ich irgendwo noch einen Versuch unternehme oder dass die Ausnahme von einer anderen Bibliothek gehandhabt wird? – eestein

+0

@eestein Es ist möglich, dass die Bibliothek die Ausnahme auslöst, sie fängt und behandelt. Die Ausgabe-Protokolle zeigt geworfene Ausnahmen (einschließlich derer, die gefangen wurden) – Rob

Antwort

0

Vielleicht wird diese Seite https://msdn.microsoft.com/zh-cn/library/jj619227.aspx
Leider helfen Haben Sie keine englische Version, können Sie versuchen, es zu übersetzen.
Es ist etwas falsch mit Ihnen fangen Ausnahme-Typ oder Code erwarten.
Versuchen Sie auf diese Weise Ihre Ausnahme abfangen: `` `

try 
{ 
    await t1; 
} 
catch (AggregateException ex) 
{ 
    var innerEx = ex.InnerExceptions[0]; 
    if (innerEx is NotSupportedException) 
    { 
     ... 
    } 
    else if (innerEx is NotImplementedException) 
    { 
     ... 
    } 
    else 
    { 
     ... 
    } 
} 

` ``

+0

Ich verstehe nicht, was dort geschrieben ist, aber ich verstehe den Code. Ich denke, es ist das Gleiche, was ich tue, oder? – eestein

+0

gleichen code wie deins ist es das falsche catch beispiel, unten ist der richtige weg catch ausnahme, und zeigen sie eine andere weise handle ausnahme von warten in diesem artikel. Auch erklären einige von thoese Design. Ich lese nur kurz, um eine Zusammenfassung zu bekommen. – Bucketcode

+0

Vielen Dank, aber das funktioniert nicht so gut. – eestein

Verwandte Themen