工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> C言語

C# - 例外処理

例外は、プログラムの実行中に発生する問題です。 C# 例外は、ゼロ除算など、プログラムの実行中に発生する例外的な状況への応答です。

例外は、プログラムのある部分から別の部分に制御を移す方法を提供します。 C# の例外処理は、try の 4 つのキーワードに基づいて構築されています。 、キャッチついに投げる .

構文

ブロックが例外を発生させると仮定すると、メソッドは try キーワードと catch キーワードの組み合わせを使用して例外をキャッチします。例外を生成する可能性のあるコードの周りに try/catch ブロックが配置されます。 try/catch ブロック内のコードは保護されたコードと呼ばれ、try/catch を使用するための構文は次のようになります −

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
}

try ブロックがさまざまな状況で複数の例外を発生させた場合に備えて、複数の catch ステートメントをリストして、さまざまな種類の例外をキャッチできます。

C# の例外クラス

C# の例外は、クラスによって表されます。 C# の例外クラスは、主に System.Exception から直接的または間接的に派生しています。 クラス。 System.Exception クラスから派生した例外クラスの一部は、System.ApplicationException です。 および System.SystemException クラス。

System.ApplicationException クラスは、アプリケーション プログラムによって生成される例外をサポートします。したがって、プログラマによって定義された例外は、このクラスから派生する必要があります。

System.SystemException class は、事前定義されたすべてのシステム例外の基本クラスです。

次の表は、Sytem.SystemException クラスから派生した定義済みの例外クラスの一部を示しています −

Sr.No. 例外クラスと説明
1

System.IO.IOException

I/O エラーを処理します。

2

System.IndexOutOfRangeException

メソッドが範囲外の配列インデックスを参照するときに生成されるエラーを処理します。

3

System.ArrayTypeMismatchException

型が配列型と一致しない場合に生成されるエラーを処理します。

4

System.NullReferenceException

null オブジェクトの参照から生成されたエラーを処理します。

5

System.DivideByZeroException

被除数をゼロで除算して発生したエラーを処理します。

6

System.InvalidCastException

型キャスト中に生成されたエラーを処理します。

7

System.OutOfMemoryException

空きメモリ不足から発生したエラーを処理します。

8

System.StackOverflowException

スタック オーバーフローから生成されたエラーを処理します。

例外の処理

C# は、try ブロックと catch ブロックの形式で、例外処理に対する構造化されたソリューションを提供します。これらのブロックを使用して、コア プログラム ステートメントをエラー処理ステートメントから分離します。

これらのエラー処理ブロックは、try を使用して実装されます 、キャッチ 、そして最後に キーワード。以下は、ゼロ除算条件が発生したときに例外をスローする例です-

ライブデモ
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();
      }
   }
}

上記のコードをコンパイルして実行すると、次の結果が生成されます −

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

ユーザー定義の例外の作成

独自の例外を定義することもできます。ユーザー定義の例外クラスは Exception から派生します クラス。次の例はこれを示しています-

ライブデモ
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);
      }
   }
}

上記のコードをコンパイルして実行すると、次の結果が生成されます −

TempIsZeroException: Zero Temperature found

物を投げる

System.Exception から直接的または間接的に派生している場合、オブジェクトをスローできます。 クラス。 catchブロックでthrowステートメントを使用して、現在のオブジェクトを次のようにスローできます-

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

C言語

  1. C# を使用して
  2. Cファイルの取り扱い
  3. try、except、finally ステートメントを使用した Python 例外処理
  4. Java 例外処理
  5. C++ 例外処理:Try、Catch、throw の例
  6. Python の例外処理:try、catch、finally、raise [例]
  7. C++ シグナル処理
  8. Java 9 - モジュールシステム
  9. PLCとDCS
  10. モジュラーパレット処理システムにより、柔軟な生産が可能になります
  11. パレット処理システムが拡張され、生産の変更がサポートされる