Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

C# - Gestion des exceptions

Une exception est un problème qui survient lors de l'exécution d'un programme. Une exception C# est une réponse à une circonstance exceptionnelle qui survient pendant l'exécution d'un programme, comme une tentative de division par zéro.

Les exceptions permettent de transférer le contrôle d'une partie d'un programme à une autre. La gestion des exceptions C# repose sur quatre mots-clés :try , attraper , enfin , et lancer .

Syntaxe

En supposant qu'un bloc lève une exception, une méthode intercepte une exception en utilisant une combinaison des mots-clés try et catch. Un bloc try/catch est placé autour du code susceptible de générer une exception. Le code dans un bloc try/catch est appelé code protégé, et la syntaxe pour utiliser try/catch ressemble à ce qui suit −

try {
   // statements causing exception
} catch( ExceptionName e1 ) {
   // error handling code
} catch( ExceptionName e2 ) {
   // error handling code
} catch( ExceptionName eN ) {
   // error handling code
} finally {
   // statements to be executed
}

Vous pouvez répertorier plusieurs instructions catch pour intercepter différents types d'exceptions au cas où votre bloc try déclencherait plus d'une exception dans différentes situations.

Classes d'exceptions en C#

Les exceptions C# sont représentées par des classes. Les classes d'exception en C# sont principalement directement ou indirectement dérivées de System.Exception classer. Certaines des classes d'exception dérivées de la classe System.Exception sont les System.ApplicationException et System.SystemException cours.

L'exception System.ApplicationException prend en charge les exceptions générées par les programmes d'application. Par conséquent, les exceptions définies par les programmeurs devraient dériver de cette classe.

L'exception System.SystemException class est la classe de base pour toutes les exceptions système prédéfinies.

Le tableau suivant fournit certaines des classes d'exception prédéfinies dérivées de la classe Sytem.SystemException −

System.IO.IOException

Gère les erreurs d'E/S.

System.IndexOutOfRangeException

Gère les erreurs générées lorsqu'une méthode fait référence à un index de tableau hors limites.

System.ArrayTypeMismatchException

Gère les erreurs générées lorsque le type ne correspond pas au type de tableau.

System.NullReferenceException

Gère les erreurs générées par le référencement d'un objet nul.

System.DivideByZeroException

Gère les erreurs générées par la division d'un dividende par zéro.

System.InvalidCastException

Gère les erreurs générées lors du transtypage.

System.OutOfMemoryException

Gère les erreurs générées par une mémoire libre insuffisante.

System.StackOverflowException

Gère les erreurs générées par le débordement de pile.

Sr.No. Classe d'exception et description
1
2
3
4
5
6
7
8

Gestion des exceptions

C# fournit une solution structurée à la gestion des exceptions sous la forme de blocs try et catch. À l'aide de ces blocs, les instructions de programme de base sont séparées des instructions de gestion des erreurs.

Ces blocs de gestion des erreurs sont implémentés à l'aide de try , attraper , et enfin mots clés. Voici un exemple de levée d'une exception lorsque la condition de division par zéro se produit −

Démo en direct
using System;

namespace ErrorHandlingApplication {
   class DivNumbers {
      int result;
      
      DivNumbers() {
         result = 0;
      }
      public void division(int num1, int num2) {
         try {
            result = num1 / num2;
         } catch (DivideByZeroException e) {
            Console.WriteLine("Exception caught: {0}", e);
         } finally {
            Console.WriteLine("Result: {0}", result);
         }
      }
      static void Main(string[] args) {
         DivNumbers d = new DivNumbers();
         d.division(25, 0);
         Console.ReadKey();
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

Exception caught: System.DivideByZeroException: Attempted to divide by zero. 
at ...
Result: 0

Créer des exceptions définies par l'utilisateur

Vous pouvez également définir votre propre exception. Les classes d'exception définies par l'utilisateur sont dérivées de l'Exception classer. L'exemple suivant le démontre −

Démo en direct
using System;

namespace UserDefinedException {
   class TestTemperature {
      static void Main(string[] args) {
         Temperature temp = new Temperature();
         try {
            temp.showTemp();
         } catch(TempIsZeroException e) {
            Console.WriteLine("TempIsZeroException: {0}", e.Message);
         }
         Console.ReadKey();
      }
   }
}
public class TempIsZeroException: Exception {
   public TempIsZeroException(string message): base(message) {
   }
}
public class Temperature {
   int temperature = 0;
   
   public void showTemp() {
      
      if(temperature == 0) {
         throw (new TempIsZeroException("Zero Temperature found"));
      } else {
         Console.WriteLine("Temperature: {0}", temperature);
      }
   }
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

TempIsZeroException: Zero Temperature found

Lancer des objets

Vous pouvez lancer un objet s'il est directement ou indirectement dérivé de System.Exception classer. Vous pouvez utiliser une instruction throw dans le bloc catch pour lancer l'objet actuel en tant que −

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

Langue C

  1. C# en utilisant
  2. Gestion des fichiers C
  3. Gestion des exceptions Python à l'aide de l'instruction try, except et finally
  4. Gestion des exceptions Java
  5. Gestion des exceptions C++ :essayez, attrapez, lancez Exemple
  6. Gestion des exceptions Python :essayer, attraper, enfin et relancer [Exemple]
  7. Gestion des signaux C++
  8. Java 9 - Système de modules
  9. CPL contre DCS