2010-03-03 8 views

Répondre

1

public void function() {

try 
{ 
    //some code here 
} 
catch 
{ 
    return; 
} 

}

lorsque le retour; est frappé, le flux d'exécution saute hors de la fonction. Cela ne peut être fait que sur des méthodes void.

EDIT: vous faites ceci si vous ne voulez pas exécuter le reste de la fonction.Par exemple si vous faites un IO de fichier et qu'une erreur de lecture se produit, vous ne voulez pas exécuter de code qui gère le traitement des données dans ce fichier puisque vous ne l'avez pas.

7

Il y a des occasions où vous ne se soucient pas de l'exception levée, seulement que l'opération Try a échoué. Un exemple serait les fonctions TryParse qui code pseduo ressemblent:

try 
{ 
    //attempt conversion 
    return true; 
} 
catch 
{ 
    return false; 
} 
1

Ce serait utile si vous savez ce que la valeur de retour de la fonction doit être dans le bloc catch.

Exemple:

public bool IsDatabaseAvailable() { 
    try { 
     // connect 
     return true; 
    } 
    catch (Exception) { 
     return false; 
    } 
    finally { 
     // clean up 
    } 
} 
+0

En fait, je viens de voir le mot-clé return utilisé. – dotnetdev

+0

@dotnetdev: Par opposition à quoi? J'utilise le mot-clé return. – recursive

+0

Désolé je voulais dire "signifié" (je voulais juste dire le mot-clé de retour ... utilisé ") – dotnetdev

1

Vous pouvez attraper l'erreur, connectez-vous et dire retourner une valeur de faux qui indique si la fonction a réussi. Dans d'autres situations, vous voudrez peut-être retourner des données qui ont été calculées dans le bloc try

1

Une méthode dans .Net Framework lance une exception quand elle n'a pas le bon format.

Un bon exemple est le int.TryParse(object value)

si votre valeur est "10s" ça va Trow une exception. Dans ce cas, nous savons que c'est à cause d'une conversion invalide.

Alors

try 
{ 
    int.TryParse(value); 
    return true; 
} 
catch { return false; } 

Peut-être une fonction qui nous dira si la chaîne est un interger valide. Si vous utilisez ce formulaire pour cette question, ne faites pas de catch (Exception ex) car cela forcerait le .Net à sérialiser l'erreur à l'intérieur de l'objet, ce qui est plutôt lent.

Il est également important de se rappeler que même si vous utilisez le retour dans le bloc try catch, il exécutera toujours le bloc finally.

Donc si votre code cleaup est à l'intérieur, ne vous inquiétez pas, le framework s'assurera de l'appeler.

Mes 2 cents. N.

+0

Je pense que vous voulez dire' int.Parse', qui jette un format invalide, 'int.TryParse' ne lance jamais, retourne un' bool' indiquant un succès d'analyse, et prend un deuxième argument 'out int'. –

0

Toute situation où vous avez une alternative si la tentative échoue. Un exemple pourrait être vérifier si file est disponible pour certains operation

bool IsComplete = false; 

    try 
    { 
     // FileStream currentWriteableFile = 
        File.OpenWrite(sFileLocation);   
    } 
    catch(Exception) 
    { 
     return false; 
    } 
Questions connexes