Latest web development tutorials

manipulation C # exception

Les anomalies lors de problèmes d'exécution du programme. C # est une exception en réponse à des circonstances exceptionnelles qui surviennent lorsque le programme est exécuté, comme la tentative de diviser par zéro.

L'exception est prévue une commande de programme est transféré d'une partie à une autre partie du chemin. manutention # exception C sur la base des quatre mots clésci-dessus:try, catch, enfin etjeter.

  • essayez: un bloc try identifie l'exception spécifique d'un bloc de code à activer.Suivi par un ou plusieurs blocs catch.
  • attraper: attraper le programme d'exception par un gestionnaire d'exception.capture mot-clé indique la capture anormale.
  • enfin: enfin bloc est utilisé pour effectuer une déclaration donnée, indépendamment de savoir si une exception est levée exécutera.Par exemple, si vous ouvrez un fichier, indépendamment du fait qu'il devrait y avoir un fichier d'exception est fermé.
  • jeter: Lorsque des problèmes surviennent, le programme lance une exception.Utilisez des mots-clés pour terminer le lancer.

grammaire

Supposons un bloc anormal, une méthode utilisant les mots-clés essayer d'attraper une exception. Code essayer / bloc catch est protégé code, utilisation try / catch comme indiqué dans la syntaxe suivante:

essayer
{
   } // Déclaration qui a provoqué l'exception
catch (ExceptionName e1)
{
   // Code d'erreur de manipulation}
catch (ExceptionName e2)
{
   // Code d'erreur de manipulation}
catch (ExceptionName eN)
{
   // Code d'erreur de manipulation}
enfin
{
   // Déclarations à exécuter}

Vous pouvez lister plusieurs déclarations de captures pour attraper différents types d'exceptions, pour empêcher le bloc try génère plusieurs exceptions dans des circonstances différentes.

Les classes d'exception en C #

C # exception est l'utilisation de la représentation de la classe. Les classes d'exception en C # pour la plupart directement ou indirectement dérivées de la classeSystem.Exception.System.ApplicationException etSystem.SystemExceptionclasse est dérivée exception classe des classes de System.Exception.

le soutien de la classeSystem.ApplicationException générée par l'exception de l' application.Ainsi, les exceptions définies par le programmeur devraient être dérivées de cette classe.

classeSystem.SystemException est toute classe de base de système prédéfini pour les exceptions.

Le tableau suivant dresse la liste des dérivés de classes d'exception prédéfinie de classe Sytem.SystemException:

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

Gestion des exceptions

C # pour essayer de bloc catch est fourni sous la forme d'un programme de gestion structurée des exceptions. L'utilisation de ces blocs, les états de base du programme et les déclarations de gestion des erreurs séparées.

la manipulation de ces blocs d' erreur est d'utilisertry, catchet mots - clés pour atteindrefinalement.Voici une exception levée lorsqu'il est divisé par zéro Exemples:

using System;
namespace ErrorHandlingApplication
{
    DivNumbers de classe
    {
        résultat int;
        () DivNumbers
        {
            résultat = 0;
        }
        division public void (int num1, int num2)
        {
            essayer
            {
                résultat = num1 / num2;
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine ( "Exception interceptée: {0}", e);
            }
            enfin
            {
                Console.WriteLine ( "Résultat: {0}", résultat);
            }

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

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

Exception interceptée: System.DivideByZeroException: Tentative de division par zéro. 
à ...
Résultat: 0

Créer exception définie par l'utilisateur

Vous pouvez également définir vos propres exceptions. Défini par l' utilisateur classe d'exception est dérivée de la classeApplicationException.L'exemple suivant illustre ce point:

using System;
namespace UserDefinedException
{
   TestTemperature de classe
   {
      static void Main (string [] args)
      {
         Température temp = nouvelle température ();
         essayer
         {
            temp.showTemp ();
         }
         catch (TempIsZeroException e)
         {
            Console.WriteLine ( "TempIsZeroException: {0}", e.Message);
         }
         Console.ReadKey ();
      }
   }
}
TempIsZeroException public class: ApplicationException
{
   TempIsZeroException public (string message): base (message)
   {
   }
}
public class Température
{
   int température = 0;
   showTemp public void ()
   {
      if (température == 0)
      {
         jeter (nouveau TempIsZeroException ( «Zéro Température trouvé"));
      }
      autre
      {
         Console.WriteLine ( "Température: {0}", température);
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

TempIsZeroException: Zero Température trouvé

Throwable

Si l'exception est directement ou indirectement dérivée de la classeSystem.Exception, vous pouvez jeter un objet.Vous pouvez utiliser l'instruction catch bloc de touche pour lancer l'objet en cours comme suit:

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