回答編集履歴
1
refinement
test
CHANGED
@@ -6,9 +6,9 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
- [A] プログラマのコード実装誤り: ヌルポインタ参照はがし、配列範囲外アクセス、未初期化変数からの読取りなど
|
9
|
+
- [A] プログラマのコード実装誤り: ヌルポインタ参照はがし、配列範囲外アクセス、未初期化変数からの読取りなど。
|
10
10
|
|
11
|
-
- [B] プログラム実行時の外部環境: ファイル
|
11
|
+
- [B] プログラム実行時の外部環境: ファイル不在、ネットワーク不達、ディスクFULLでファイル書き込めない、メモリ不足など。
|
12
12
|
|
13
13
|
|
14
14
|
|
@@ -26,9 +26,9 @@
|
|
26
26
|
|
27
27
|
|
28
28
|
|
29
|
-
むしろプログラミング言語C++に限れば、[A] に対する例外機構はほとんど期待できません。例:ヌルポインタ参照はがしはC++例外機構を用いても検知できません。
|
29
|
+
むしろプログラミング言語C++に限れば、[A] に対する例外機構はほとんど期待できません。例:ヌルポインタ参照はがしはC++例外機構を用いても検知できません。運が良ければ該当箇所でプログラム異常停止、運が悪いとランダムにデータ破損したり一見無関係な箇所でプログラム異常停止します。
|
30
30
|
|
31
|
-
他のプログラミング言語(例えばJavaやC#)ではヌルポインタ/参照はがしのようなロジックエラーでも、各言語における例外機構によって検知可能です。
|
31
|
+
他のプログラミング言語(例えばJavaやC#)ではヌルポインタ/参照はがしのようなロジックエラーでも、各言語における例外機構によって検知可能です([`NullPointerException`](https://docs.oracle.com/javase/jp/8/docs/api/java/lang/NullPointerException.html)や [`NullReferenceException `](https://docs.microsoft.com/ja-jp/dotnet/api/system.nullreferenceexception))。
|
32
32
|
|
33
33
|
|
34
34
|
|
@@ -42,15 +42,15 @@
|
|
42
42
|
|
43
43
|
|
44
44
|
|
45
|
-
プログラミング言語Cには例外機構が存在しないため、例外処理(エラーハンドリング)は「特殊な戻り値 や エラー
|
45
|
+
プログラミング言語Cには例外機構が存在しないため、例外処理(エラーハンドリング)は「特殊な戻り値 や エラーコード」を用いて実現されます。
|
46
46
|
|
47
|
-
例:`fopen`でファイルオープンに失敗すると関数は値`NULL`を返し、エラー原因を表すコードを`error
|
47
|
+
例:`fopen`でファイルオープンに失敗すると関数は値`NULL`を返し、エラー原因を表すコードを[`errno`変数](https://cpprefjp.github.io/reference/cerrno/errno.html)に格納する。
|
48
48
|
|
49
49
|
|
50
50
|
|
51
|
-
プログラミング言語C++の場合、ほとんどの標準ライブラリ機能は例外機構の存在を前提に設計・提供されます。
|
51
|
+
プログラミング言語C++の場合、ほとんどの標準ライブラリ機能は「例外機構」の存在を前提に設計・提供されます。サードパーティー製ライブラリでも、多くは標準ライブラリに準じた設計が行われます。
|
52
52
|
|
53
|
-
例:`new MyClass()`でメモリ確保に失敗すると、`std::bad_alloc`例外を送出する。
|
53
|
+
例:`new MyClass()`でメモリ確保に失敗すると、[`std::bad_alloc`例外](https://cpprefjp.github.io/reference/new/bad_alloc.html)を送出する。
|
54
54
|
|
55
55
|
|
56
56
|
|