teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

補足追記

2021/06/28 15:04

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -6,4 +6,26 @@
6
6
  規定のterminate functionは、set_terminate() で独自の物に変更することが可能です。
7
7
 
8
8
  [(docs.microsoft.com)未処理の C++ 例外](https://docs.microsoft.com/ja-jp/cpp/cpp/unhandled-cpp-exceptions)
9
- > 現在の例外に一致するハンドラー (または省略記号ハンドラー) が見つからない場合は、 catch 定義済みの terminate ランタイム関数が呼び出されます。
9
+ > 現在の例外に一致するハンドラー (または省略記号ハンドラー) が見つからない場合は、 catch 定義済みの terminate ランタイム関数が呼び出されます。
10
+
11
+ ---
12
+ 補足追記です。
13
+
14
+ > ちなみに、プロジェクトをBuildして作成されるsection26.exeを直接実行すると、エラーは発生せず、
15
+ std::cout << i;
16
+ も実行されていないため、意図通り動作しているようではあります。
17
+
18
+ 正確には意図通り動作していません。
19
+ 以下のように、try{}catch(){}の後に処理があった場合terminate function内でabortするため、その処理は行われません。
20
+ ```C++
21
+ // ・・・略・・・
22
+ try {
23
+ throw input;
24
+ }
25
+ catch(double &i){
26
+ std::cout << i;
27
+ }
28
+
29
+ std::cout << "Finish.";
30
+ }
31
+ ```