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

C++でのキャッチブロックと型変換


このセクションでは、C++での例外処理と型変換にcatchブロックを使用する方法を説明します。

最初に、コードを見てみましょう。出力がどうなるか、そしてそれらがどのように生成されるかを見ていきます。

#include <iostream>
using namespace std;
int main() {
   try{
      throw 'a';
   }
   catch(int a) {
      cout << "Integer value is caught :" << a;
   }
   catch(...) {
      cout << "Entering into default catch block";
   }
}

出力

Entering into default catch block

それで、これの背後にある理由は何ですか。なぜこの種の出力が生成されているのですか?ご覧のとおり、文字「a」がスローされますが、最初のキャッチブロックはint用です。 「a」のASCIIが整数であると考えると、最初のブロックに入りますが、そのような変換はcatchブロックには適用されません。

別の例を見てみましょう。この例では、スローされたオブジェクトに対して変換コンストラクターが呼び出されていないことがわかります。

#include <iostream>
using namespace std;
class TestExcept1 {};
class TestExcept2 {
   public:
      TestExcept2 (const TestExcept1 &e ){ // Defining the Conversion constructor
         cout << "From the Conversion constructor";
      }
};
main() {
   try{
      TestExcept1 exp1;
      throw exp1;
   } catch(TestExcept2 e2) {
      cout << "Caught TestExcept2 " << endl;
   } catch(...) {
      cout << "Entering into default catch block " << endl;
   }
}

出力

Entering into default catch block

派生型オブジェクトがスローされている間、派生型オブジェクトは基本型オブジェクトに変換されません。


  1. フリップフロップの種類とC++での変換

    フリップフロップはシーケンシャルデジタル回路です。フリップフロップにはいくつかの種類があります。ここでは、フリップフロップのタイプと、あるフリップフロップから別のフリップフロップへの変換ルールを確認します。 フリップフロップには基本的に4つのタイプがあります- SRフリップフロップ Dフリップフロップ JKフリップフロップ Tフリップフロップ SRフリップフロップ SRフリップフロップは、正のクロック遷移または負のクロック遷移のみで動作します。一方、SRラッチはイネーブル信号で動作します。 SRフリップフロップの回路図を次の図に示します。 この回路には、2つの入力SとR、および

  2. Pythonデータ型と型変換

    Pythonデータ型と型変換の実行方法の概要。 Pythonデータ型 Pythonで変数を作成または宣言する場合、変数はさまざまなデータ型を保持できます。 Pythonには、次の組み込みデータ型があります。 str int、float、complex リスト、タプル dict セット ブール byte、bytearray テキストタイプ:str str データ型は、文字列を宣言するときに使用されます 変数。 例: x = some string y = str(another string) 数値型:int、float、complex 数値変数を作成する