Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C# - Ausnahmebehandlung

Eine Ausnahme ist ein Problem, das während der Ausführung eines Programms auftritt. Eine C#-Ausnahme ist eine Reaktion auf einen außergewöhnlichen Umstand, der auftritt, während ein Programm ausgeführt wird, z. B. der Versuch, durch Null zu dividieren.

Ausnahmen bieten eine Möglichkeit, die Kontrolle von einem Teil eines Programms auf einen anderen zu übertragen. Die C#-Ausnahmebehandlung basiert auf vier Schlüsselwörtern:try , fangen , endlich , und werfen .

Syntax

Angenommen, ein Block löst eine Ausnahme aus, fängt eine Methode eine Ausnahme mit einer Kombination aus den Schlüsselwörtern try und catch ab. Ein Try/Catch-Block wird um den Code platziert, der möglicherweise eine Ausnahme generiert. Code innerhalb eines try/catch-Blocks wird als geschützter Code bezeichnet, und die Syntax für die Verwendung von try/catch sieht wie folgt aus −

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
}

Sie können mehrere catch-Anweisungen auflisten, um verschiedene Arten von Ausnahmen abzufangen, falls Ihr try-Block in verschiedenen Situationen mehr als eine Ausnahme auslöst.

Ausnahmeklassen in C#

C#-Ausnahmen werden durch Klassen dargestellt. Die Ausnahmeklassen in C# werden hauptsächlich direkt oder indirekt von der System.Exception abgeleitet Klasse. Einige der von der System.Exception-Klasse abgeleiteten Ausnahmeklassen sind System.ApplicationException und System.SystemException Klassen.

Die System.ApplicationException -Klasse unterstützt Ausnahmen, die von Anwendungsprogrammen generiert werden. Daher sollten die von den Programmierern definierten Ausnahmen von dieser Klasse abgeleitet werden.

Die System.SystemException Klasse ist die Basisklasse für alle vordefinierten Systemausnahmen.

Die folgende Tabelle enthält einige der vordefinierten Ausnahmeklassen, die von der Sytem.SystemException-Klasse −

abgeleitet sind
Sr.No. Ausnahmeklasse und -beschreibung
1

System.IO.IOException

Behandelt E/A-Fehler.

2

System.IndexOutOfRangeException

Behandelt Fehler, die generiert werden, wenn eine Methode auf einen Array-Index außerhalb des zulässigen Bereichs verweist.

3

System.ArrayTypeMismatchException

Behandelt Fehler, die generiert werden, wenn der Typ nicht mit dem Array-Typ übereinstimmt.

4

System.NullReferenceException

Behandelt Fehler, die beim Verweisen auf ein Nullobjekt generiert werden.

5

System.DivideByZeroException

Behandelt Fehler, die beim Teilen eines Dividenden durch Null entstehen.

6

System.InvalidCastException

Behandelt Fehler, die während der Typumwandlung generiert werden.

7

System.OutOfMemoryException

Behandelt Fehler, die durch unzureichenden freien Speicher generiert werden.

8

System.StackOverflowException

Behandelt Fehler, die durch einen Stapelüberlauf generiert wurden.

Behandlung von Ausnahmen

C# bietet eine strukturierte Lösung für die Ausnahmebehandlung in Form von Try-and-Catch-Blöcken. Mit diesen Blöcken werden die Anweisungen des Kernprogramms von den Anweisungen zur Fehlerbehandlung getrennt.

Diese Fehlerbehandlungsblöcke werden mithilfe von try implementiert , fangen , und endlich Schlüsselwörter. Das Folgende ist ein Beispiel für das Auslösen einer Ausnahme, wenn die Bedingung zum Teilen durch Null auftritt −

Live-Demo
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();
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

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

Benutzerdefinierte Ausnahmen erstellen

Sie können auch Ihre eigene Ausnahme definieren. Benutzerdefinierte Ausnahmeklassen werden von der Exception abgeleitet Klasse. Das folgende Beispiel demonstriert dies −

Live-Demo
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);
      }
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, erzeugt er das folgende Ergebnis −

TempIsZeroException: Zero Temperature found

Objekte werfen

Sie können ein Objekt auslösen, wenn es entweder direkt oder indirekt von der System.Exception abgeleitet ist Klasse. Sie können eine throw-Anweisung im catch-Block verwenden, um das aktuelle Objekt als −

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

C Sprache

  1. C# verwenden
  2. C Dateiverwaltung
  3. Python-Ausnahmebehandlung Mit der try-, except- und finally-Anweisung
  4. Java-Ausnahmebehandlung
  5. C++-Ausnahmebehandlung:Try, Catch, Throw Beispiel
  6. Python-Ausnahmebehandlung:Try, Catch, Final &Raise [Beispiel]
  7. C++-Signalverarbeitung
  8. Java 9 - Modulsystem
  9. SPS vs. DCS
  10. Modulares Palettenhandhabungssystem ermöglicht flexible Produktion