C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での例外処理の基本


C ++では、例外処理はランタイムエラーを処理するプロセスです。例外は、C++で実行時にスローされるイベントです。すべての例外は、std::exceptionクラスから派生します。処理可能なランタイムエラーです。例外を処理しない場合は、例外メッセージを出力してプログラムを終了します。

例外は、C ++標準では、プログラム内で使用できるクラスとして定義されています。親子クラス階層の配置を以下に示します。

C++での例外処理の基本

C++の一般的な例外クラスは次のとおりです。

例外 説明
std ::exception これは、すべての標準C++例外の例外および親クラスです。
std ::bad_cast これはdynamic_castによってスローされる例外です。
std ::bad_exception この例外は、C++プログラムで予期しない例外を処理するために使用されます。
std ::bad_alloc 通常はnewによってスローされます。
std ::logic_failure この例外は、コードを読み取ることで検出できます。
std ::runtime_error この例外はコードを読み取っても検出できません
std ::bad_typeid typeidによってスローされる例外です。

キーワード:

例外処理には、try、catch、throwの3つのキーワードがあります。

Try / Catchブロック:

C ++では、例外処理はtry/catchステートメントを使用して実行されます。例外が発生する可能性のあるコードは、Tryブロックで配置するために使用されます。キャッチブロックは、例外を処理するために使用されます。

サンプルコード

#include <iostream>
using namespace std;
class Sample1 {
   public:
   Sample1()
   {
      cout << "Construct an Object of sample1" << endl;
   }
   ~Sample1()
   {
      cout << "Destruct an Object of sample1" << endl;
   }
};
class Sample2 {
   public:
   Sample2()
   {
      int i=7;
      cout << "Construct an Object of sample2" << endl;
      throw i;
   }
   ~Sample2()
   {
      cout << "Destruct an Object of sample2" << endl;
   }
};
int main() {
   try {
      Sample1 s1;
      Sample2 s2;
   } catch(int i) {
      cout << "Caught " << i << endl;
   }
}

出力

Construct an Object of sample1
Construct an Object of sample2
Destruct an Object of sample1
Caught 7

ユーザー定義の例外:

例外クラスの機能を継承してオーバーライドすることで、独自の例外を定義できます。

サンプルコード

#include <iostream>
#include <exception>
using namespace std;
struct DivideByZero : public exception {
   const char * what () const throw () {
      return "My Exception";
   }
};
int main() {
   try {
      throw DivideByZero();
   } catch(DivideByZero& e) {
      cout << "Exception caught" << endl;
      cout << e.what() << endl;
   } catch(exception& e) {
   }
}

出力

Exception caught
My Exception
what() = A public method provided by exception class and it has been
overridden by all the child exception classes. It returns the cause of an
exception.

  1. C++で例外はどのように機能しますか

    C ++では、例外処理はランタイムエラーを処理するプロセスです。例外は、C++で実行時にスローされるイベントです。すべての例外は、std::exceptionクラスから派生します。処理可能なランタイムエラーです。例外を処理しない場合は、例外メッセージを出力してプログラムを終了します。 例外は、C ++標準では、プログラム内で使用できるクラスとして定義されています。親子クラス階層の配置を以下に示します- C++の一般的な例外クラスは-です。 Sr.No。 例外と説明 1 std ::exception これは、すべての標準C++例外の例外および親クラスです。

  2. Pythonでの例外処理とは何ですか?

    エラーとは、構文エラーのように、コンパイル時にプログラムで問題が発生することです。 たとえば。 'abe' = 5 出力 SyntaxError: can't assign to literal ステートメントまたは式が構文的に正しい場合でも、それを実行しようとするとエラーが発生する可能性があります。実行中に検出されたエラーは例外と呼ばれ、必ずしも致命的とは限りません。例外が処理されない場合、コードの実行時または実行時にエラーメッセージが表示されます。 一般に、Pythonスクリプトで処理できないエラーが発生すると、例外が発生し、例外オブジェクトが作成されます。