Latest web development tutorials

C # gestione eccezioni

Anomalie durante problemi di esecuzione del programma. C # è un'eccezione in risposta alle circostanze eccezionali derivanti quando il programma viene eseguito, come il tentativo di divisione per zero.

L'eccezione è previsto un controllo del programma viene trasferito da una parte all'altra parte del modo. C # gestione eccezioni in base alle quattro parole chiavedi cui sopra:try, catch, infine, egettare.

  • Prova: un blocco try identifica l'eccezione specifica di un blocco di codice da attivare.Seguito da uno o più blocchi catch.
  • prendere: prendere il programma di eccezione attraverso un gestore di eccezioni.cattura parola chiave indica la cattura anormale.
  • infine: blocco finallyviene utilizzato per eseguire una data istruzione, indipendentemente dal fatto che viene generata un'eccezione verrà eseguito. Ad esempio, se si apre un file, indipendentemente dal fatto che ci dovrebbe essere un file un'eccezione viene chiuso.
  • buttare: Quando sorgono problemi, il programma genera un'eccezione.Usa parole chiave per completare il tiro.

grammatica

Supponiamo che un blocco anomalo, un metodo che utilizza le parole chiave cercare di catturare un'eccezione. Codice try / blocco catch è protetto codice, utilizzare try / catch, come mostrato nella seguente sintassi:

provare
{
   } // Dichiarazione che ha causato l'eccezione
catch (ExceptionName e1)
{
   // Codice di gestione degli errori}
catch (ExceptionName e2)
{
   // Codice di gestione degli errori}
catch (ExceptionName EN)
{
   // Codice di gestione degli errori}
infine
{
   // istruzioni da eseguire}

È possibile elencare più istruzioni di cattura per catturare diversi tipi di eccezioni, per evitare che il blocco try genera più eccezioni in circostanze diverse.

le classi delle eccezioni in C #

C # eccezione è l'uso di rappresentazione della classe. le classi delle eccezioni in C # per lo più direttamente o indirettamente derivata dalla classeSystem.Exception.System.ApplicationException eSystem.SystemExceptionclasse è derivata eccezione classe classi System.Exception.

Supporto classeSystem.ApplicationException generato dal l'eccezione di applicazione.Così le eccezioni definiti dal programmatore dovrebbero essere derivati ​​da questa classe.

ClasseSystem.SystemException è tutto predefinita classe di base del sistema per le eccezioni.

La seguente tabella elenca alcuni deriva da classi di eccezioni predefinite classe Sytem.SystemException:

异常类描述
System.IO.IOException处理 I/O 错误。
System.IndexOutOfRangeException处理当方法指向超出范围的数组索引时生成的错误。
System.ArrayTypeMismatchException处理当数组类型不匹配时生成的错误。
System.NullReferenceException处理当依从一个空对象时生成的错误。
System.DivideByZeroException处理当除以零时生成的错误。
System.InvalidCastException处理在类型转换期间生成的错误。
System.OutOfMemoryException处理空闲内存不足生成的错误。
System.StackOverflowException处理栈溢出生成的错误。

Gestione delle eccezioni

C # per cercare di blocco catch viene fornito sotto forma di un programma di gestione delle eccezioni strutturata. L'utilizzo di questi blocchi, le istruzioni del programma di base e le dichiarazioni di gestione degli errori separati.

la gestione di questi blocchi errore è quello di utilizzaretry, catche,infine,parole chiave da raggiungere. Ecco un eccezione generata quando diviso per zero Esempi:

using System;
namespace ErrorHandlingApplication
{
    DivNumbers classe
    {
        int result;
        DivNumbers ()
        {
            risultato = 0;
        }
        divisione public void (int num1, num2 int)
        {
            provare
            {
                risultato = num1 / num2;
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine ( "Eccezione pescato: {0}", e);
            }
            infine
            {
                Console.WriteLine ( "Risultato: {0}", risultato);
            }

        }
        static void Main (string [] args)
        {
            DivNumbers D = nuovi DivNumbers ();
            d.division (25, 0);
            Console.ReadKey ();
        }
    }
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

Eccezione catturato: System.DivideByZeroException: Si è tentato di dividere per zero. 
a ...
Risultato: 0

Creare un'eccezione definita dall'utente

È inoltre possibile definire le proprie eccezioni. classe di eccezione definita dall'utente è derivata dalla classeApplicationException.L'esempio che segue illustra questo punto:

using System;
namespace UserDefinedException
{
   classe TestTemperature
   {
      static void Main (string [] args)
      {
         temperatura Temperatura = new temperatura ();
         provare
         {
            temp.showTemp ();
         }
         catch (TempIsZeroException e)
         {
            Console.WriteLine ( "TempIsZeroException: {0}", e.Message);
         }
         Console.ReadKey ();
      }
   }
}
Classe TempIsZeroException pubblico: ApplicationException
{
   TempIsZeroException pubblico (messaggio stringa): base (messaggio)
   {
   }
}
public class Temperatura
{
   int temperatura = 0;
   showTemp public void ()
   {
      se (== temperatura 0)
      {
         gettare (nuova TempIsZeroException ( "Zero Temperatura trovato"));
      }
      altro
      {
         Console.WriteLine ( "Temperatura: {0}", temperatura);
      }
   }
}

Quando il codice di cui sopra è compilato ed eseguito, produce i seguenti risultati:

TempIsZeroException: Zero Temperatura trovato

Throwable

Se l'eccezione è direttamente o indirettamente derivato dalla classeSystem.Exception, si può buttare un oggetto.È possibile utilizzare l'istruzione catch blocco tiro di buttare l'oggetto corrente nel seguente modo:

Catch (Exception e)
{
   ...
   tiro e
}