Trattamento di eccezioni
|
Praticamente tutto il programma compreso c# .net pu� avere certa quantit� di errori. Possono essere classificati largamente come gli errori compile-time ed errori runtime. Gli errori Compile-time sono errori che possono essere trovati durante il processo della compilazione del codice sorgente. La maggior parte di loro sono errori di sintassi. Gli errori Runtime accadono quando il programma sta funzionando.
|
� molto difficile da trovare e mettere a punto gli errori run-time. Questi errori inoltre hanno denominato le eccezioni. Le regole di buon stile di codificazione dicono che il programma deve potere maneggiare tutto l'errore runtime. L'eccezione genera una chiamata di eccezione a tempo di esecuzione. Le eccezioni in C# possono essere denominate usando due metodi:
|
- Usando l'operatore del tiro. Denomina comunque il codice di controllo e procede un'eccezione.
-
Se usando gli operatori va awry, pu� generare un'eccezione.
|
Tipi differenti di eccezioni
|
La lingua di C# usa molti tipi di eccezioni, che sono definite nei codici categoria speciali. Tutti sono ereditati da codice categoria basso chiamato System.Exception. Ci sono codici categoria che procedono molti generi di eccezioni: da eccezione di memoria, l'eccezione di trabocco di pila, l'eccezione nulla di riferimento, indice da eccezione della gamma, invalid ha lanciato l'eccezione, l'eccezione aritmetica ecc. Questa lezione privata del c# si occupa dei codici categoria di eccezione e di abitudine del c# di DivideByZero nelle eccezioni del c#.
|
C# ha definito alcune parole chiavi per l'elaborazione delle eccezioni. L'pi� importanti sono prova, fermo ed infine.
|
Quello primo da conoscere � l'operatore di prova. Ci� � usata in una parte del codice, dove esiste una possibilit� di eccezione da gettare. Ma operatore? prova? � usato sempre con gli operatori: fermo ed infine.
|
Vedere il seguente esempio di maneggiamento dell'eccezione semplice nel c#.
|
// try catch exception
int zero = 0;
try
{
int div = 100/zero;
}
catch(DivideByZeroException)
{
Console.WriteLine("Division by zero exception passed");
}
|
|
Questo codice nel tempo di esecuzione getta un DivideByZeroException e scrive un certo messaggio tramite la sezione comandi. Ma se desiderate liberarti alcune risorse che gli sono state generate devono usare la prova? infine costruzione. Infine sar� denominato anche se non ci fossero eccezioni sollevate.
|
Bitmap bit = null;
// try finally exception
try
{
bit = new Bitmap(100,100);
}
finally
{
bit.Dispose();
Console.WriteLine("bitmap is disposed");
}
|
|
Nel senso simile possiamo usare la prova? fermo? infine costruzione.
|
Alcuni pi� grandi progetti hanno potuto avere un requisito di generazione dei loro propri codici categoria su ordinazione di eccezione. Proviamo a generare il codice categoria che convalida il email address. Convalider� per? @? simbolo. Avere prego uno sguardo sulla seguente parte del codice:
|
public class TextException : Exception
{
public TextException() : base()
{
}
public TextException(string message) : base(message)
{
}
}
public class MailValidator
{
MailValidator()
{
}
private static char symbol = '@';
public static void TestEnteredMail(string mailAddress)
{
if(mailAddress.IndexOf(symbol)==-1)
{
Console.WriteLine("The string entered is not a valid email address");
throw(new TextException());
}
}
}
|
|
Qui era la corrente alternata generata #. Codice categoria netto di TextException che eredita dal codice categoria di System.Exception della biblioteca del codice categoria di .NET. Realmente non fa niente, ma ci � un codice categoria supplementare MailValidator. Ha metodo di TestEnteredMail che alza un TextException. Ora guardare l'uso di esso nella funzione principale.
|
try
{
MailValidator.TestEnteredMail(Console.ReadLine());
}
catch(TextException)
{
Console.WriteLine("Exception was passed");
}
|
|
Cos�, se l'utente fornisce l'indirizzo della posta senza �@� tiri di simbolo un'eccezione.
|
 |
 |
Keywords Exception Handling, java exception, oracle exception, c++ exception, c# exception,
jsp exception, exception api, exception tutorial, throw exception,
exception framework, exception vc++, exception plsql, struts exception,
exception throwing, package handling, throws exception, exception servlet,
exception sql, sample handling, exception block, catch exception, application exception,
exception method
|