2017-03-17 3 views
1

こんにちは、私はC++のプログラミングには全く新しいので、以下のコードを理解するのは難しいです。catchだから私はなぜ彼らがこのコードでcatchを使用するのか知りたいです。事前このC++コードでcatchの使い方はあります

#include <iostream> 
#include <exception> 
using namespace std; 
int main() 
{ 
try 
{ 
    int* myarray = new int[1000]; 
    cout << "allocated"; 
} 
catch (exception& e) 
{ 
    cout << "Standard exception: " << e.what() << endl; 
    } 
    return 0; 
    } 

答えて

5

オペレータnewのおかげで、それが必要な領域を割り当てることができない場合に例外をスローすることがあります。上記のリンクから

:それはストレージの割り当てに失敗した場合

throwing (1) void* operator new (std::size_t size) throw (std::bad_alloc); 

はbad_allocをスローします。それ以外の場合は、 例外は発生しません(ノー・スロー保証)。

+0

@alex –

+0

@PSFRomeshお返事ありがとうございました!そして成功を祈る! –

+0

'new'がstruct/classのインスタンスを割り当てるとき、' new [] 'がstruct/class要素の配列を割り当てたとき、メモリはOKを割り当てるかもしれませんが、struct/classコンストラクタはそれ自身の例外を投げるかもしれないことに注意してください。基本的な型の配列を割り当てるので、この例ではそうではありません。しかしそれは気づくべきことです。 –

0

catchのステートメントは、tryブロック内のステートメントの1つが例外をスローしたときに実行されます。このチュートリアルのリンク意志がトン役立ちます:http://www.cplusplus.com/doc/tutorial/exceptions/

+0

回答ありがとう@sam –

0

試みをし、最初のそれはtryブロックを使用してメモリ割り当てをチェックウィルこの場合にはC++

try 
{ 

int* myarray = new int[1000]; 

    cout << "allocated"; 
} 

catch (exception& e) 
{ 

cout << "Standard exception: " << e.what() << endl; 

} 

に内部例外処理を来るキャッチし、それがメモリの割り当てに失敗した場合キャッチを使用すると例外がスローされ、そのメモリを割り当てることができませんでした。

関連する問題