回答編集履歴
1
補足追記
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
|
+
```
|