2010-03-03 10 views

risposta

1

funzione public void() {

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

}

quando il ritorno; viene colpito, il flusso di esecuzione salta fuori dalla funzione. Questo può essere fatto solo con metodi void.

MODIFICA: lo si fa se non si desidera eseguire il resto della funzione.Ad esempio, se si sta eseguendo un file I/O e si verifica un errore di lettura, non si desidera eseguire codice che gestisca l'elaborazione dei dati in quel file poiché non lo si possiede.

7

Ci sono occasioni in cui non si interessano l'eccezione generata, solo che l'operazione non è riuscita Try. Un esempio potrebbe essere le funzioni TryParse che nel codice pseduo assomigliano:

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

questo sarebbe utile se si sa cosa il valore di ritorno della funzione dovrebbe essere nel blocco catch.

Esempio:

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

In realtà ho appena visto la parola chiave di ritorno utilizzata. – dotnetdev

+0

@dotnetdev: Al contrario di cosa? Sto usando la parola chiave return. – recursive

+0

Scusate volevo dire "significato" (in realtà intendevo solo la parola chiave return ... used "). – dotnetdev

1

Si potrebbe desiderare di rilevare l'errore, accedere e dire restituire il valore false che indica se la funzione ha avuto successo. In altre situazioni potresti voler restituire alcuni dati che sono stati calcolati nel blocco try

1

Alcuni metodi all'interno di .Net Framework generano eccezioni quando non hanno il buon formato.

Un buon esempio è il int.TryParse(object value)

se il valore è "10s" Sarà Trow un'eccezione. In questo caso sappiamo che è a causa di una conversione non valida.

Così

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

potrebbe essere una funzione che ci dice se la stringa è un numero intero valido.

Se si utilizza questo modulo per questo argomento, non eseguire catch (Exception ex) in questo modo forzare il .Net per serializzare l'errore all'interno dell'oggetto che è piuttosto lento.

Inoltre, è importante ricordare che anche se si utilizza il ritorno all'interno del blocco catch try, verrà comunque eseguito il blocco finally.

Quindi, se il codice del cleaup si trova all'interno, non preoccuparti, il framework si assicurerà di chiamarlo.

I miei 2 centesimi. N.

+0

Penso che intendiate' int.Parse', che getta su un formato non valido; 'int.TryParse' non getta mai, restituisce un' bool' che indica il successo dell'analisi e prende un secondo argomento 'out int'. Solo FYI. –

0

Qualsiasi situazione in cui si ha un'alternativa se il tentativo fallisce. Un esempio potrebbe essere controllando se file è disponibile per alcuni operation

bool IsComplete = false; 

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