C++での例外処理の基本
C ++では、例外処理はランタイムエラーを処理するプロセスです。例外は、C++で実行時にスローされるイベントです。すべての例外は、std::exceptionクラスから派生します。処理可能なランタイムエラーです。例外を処理しない場合は、例外メッセージを出力してプログラムを終了します。
例外は、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.
-
C++で例外はどのように機能しますか
C ++では、例外処理はランタイムエラーを処理するプロセスです。例外は、C++で実行時にスローされるイベントです。すべての例外は、std::exceptionクラスから派生します。処理可能なランタイムエラーです。例外を処理しない場合は、例外メッセージを出力してプログラムを終了します。 例外は、C ++標準では、プログラム内で使用できるクラスとして定義されています。親子クラス階層の配置を以下に示します- C++の一般的な例外クラスは-です。 Sr.No。 例外と説明 1 std ::exception これは、すべての標準C++例外の例外および親クラスです。
-
Pythonでの例外処理とは何ですか?
エラーとは、構文エラーのように、コンパイル時にプログラムで問題が発生することです。 たとえば。 'abe' = 5 出力 SyntaxError: can't assign to literal ステートメントまたは式が構文的に正しい場合でも、それを実行しようとするとエラーが発生する可能性があります。実行中に検出されたエラーは例外と呼ばれ、必ずしも致命的とは限りません。例外が処理されない場合、コードの実行時または実行時にエラーメッセージが表示されます。 一般に、Pythonスクリプトで処理できないエラーが発生すると、例外が発生し、例外オブジェクトが作成されます。