2016-10-10 5 views
0

Je ne comprends pas pourquoi mais je reçois des exceptions Flurl et celles-ci ne sont pas interceptées par le bloc try/catch. Des idées sur pourquoi ça se passe?L'exception Flurl n'est pas interceptée

Voici le 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; 
} 

est ici la sortie (la seule raison pour laquelle je sais que l'exception est levée):

enter image description here

+0

Peut-être est-ce d'être pris dans la bibliothèque ou la méthode que vous appelez? –

+0

@MehrzadChehraz Je suis désolé mais je ne pouvais pas comprendre ... Suggérez-vous que j'essaie de nouveau/attrapez quelque part ou que l'exception soit traitée par une autre bibliothèque? – eestein

+0

@eestein Il est possible que la bibliothèque lève l'exception, l'attrape et la gère. Les journaux de sortie montrent des exceptions lancées (y compris celles qui ont été interceptées) – Rob

Répondre

0

Peut-être que cette page aidera https://msdn.microsoft.com/zh-cn/library/jj619227.aspx
Désolé ne pas avoir une version anglaise, vous pouvez essayer google le traduire.
Il est parfois incorrect d'attraper le type d'exception ou d'attendre le code.
Essayez ainsi attraper votre exception: `` `

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

` ``

+0

Je ne comprends pas ce qui est écrit ici mais je comprends le code. Je pense que c'est la même chose que je fais, n'est-ce pas? – eestein

+0

même code comme le vôtre c'est le mauvais exemple de capture, ci-dessous est la bonne façon de capturer l'exception, et montrer une autre façon de gérer l'exception d'attente dans cet article. Certains expliquent aussi ce design. Je fais seulement une lecture rapide obtenir un résumé. – Bucketcode

+0

Merci mais ça ne marche pas aussi bien. – eestein