回答編集履歴
3
typo
answer
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
「想定していない例外(エラー)」が起きることを想定して(笑)、プログラムするってことですね。
|
26
26
|
できるだけ大元でtry-catchしておくとか?
|
27
27
|
でも、発生するエラーを予想していない以上ちゃんと回復することは無理ではないでしょうか?
|
28
|
-
最悪、大元のtry-catchが原因でプログラムが異常終了さえできなくなってハマったりもします
|
28
|
+
最悪、大元のtry-catchが原因でプログラムが異常終了さえできなくなってハマったりもしますので、かなり難しいです。
|
29
29
|
|
30
30
|
ですので、理想は「想定していないエラー」があってはいけないのだと思います。
|
31
31
|
例外の場合、これが非常に難しいのですよね。奥深いところで発生する例外まで調べるのってなかなか。
|
2
追記分へのコメント
answer
CHANGED
@@ -15,4 +15,19 @@
|
|
15
15
|
0. 多重に関数呼び出しされている奥のほうで発生したエラーを遠くの呼び出し元でエラー・リカバリさせたい時。
|
16
16
|
(後、C++では例外を投げる処理は重いので、頻繁に動作する正常系処理では例外を投げないようにしています。)
|
17
17
|
|
18
|
-
と書いてる私はC++erです。でも、バリバリOOPしてますのでOOP的な共通事項について回答させて頂きました。
|
18
|
+
と書いてる私はC++erです。でも、バリバリOOPしてますのでOOP的な共通事項について回答させて頂きました。
|
19
|
+
---
|
20
|
+
|
21
|
+
【追記へのコメントです】
|
22
|
+
> 設計の際に例外が想定できてなくて、デプロイ後、お客様側で画面が真っ白になるみたいの
|
23
|
+
> (Javaとかだと回避できる方法があるんでしょうか・・)を避けるためにできる工夫があれば
|
24
|
+
> 教えていただきたいです。
|
25
|
+
「想定していない例外(エラー)」が起きることを想定して(笑)、プログラムするってことですね。
|
26
|
+
できるだけ大元でtry-catchしておくとか?
|
27
|
+
でも、発生するエラーを予想していない以上ちゃんと回復することは無理ではないでしょうか?
|
28
|
+
最悪、大元のtry-catchが原因でプログラムが異常終了さえできなくなってハマったりもしますが。
|
29
|
+
|
30
|
+
ですので、理想は「想定していないエラー」があってはいけないのだと思います。
|
31
|
+
例外の場合、これが非常に難しいのですよね。奥深いところで発生する例外まで調べるのってなかなか。
|
32
|
+
だから、できるだけ理想に近づけるよう努力するしかないです。
|
33
|
+
なので、例外を使う明確なメリットが無い時まで例外を使うのはよろしくないと思います。
|
1
日本語のミスとリスト項目の修正
answer
CHANGED
@@ -5,14 +5,14 @@
|
|
5
5
|
つまり、例外を投げることを推奨するようなものではないと思います。
|
6
6
|
ただし、例外をキャッチする方はしっかりと書くべきです。ライブラリや言語システムも投げてきますので、プログラムを終了させたくない場合は捕まえるしかないです。
|
7
7
|
|
8
|
-
ちなみに、例外はエラーを返却する方法の1つです。もう1つは戻り値や参照パラメータで返却する
|
8
|
+
ちなみに、例外はエラーを返却する方法の1つです。もう1つの方法は戻り値や参照パラメータで返却することです。それぞれ一長一短があるのでどちらを使うのか良く検討するべきです。
|
9
9
|
原則は戻り値で返却し、特定のケースで例外を使うのが妥当と思います。
|
10
10
|
|
11
11
|
さて、私自身は、パッと思いつく限り、下記のようなケースで例外を投げます。
|
12
|
-
リリース後もassertionさせる時。
|
12
|
+
0. リリース後もassertionさせる時。
|
13
|
-
エラーの種類ごとに分けてエラー・リカバリさせたい時。
|
13
|
+
0. エラーの種類ごとに分けてエラー・リカバリさせたい時。
|
14
|
-
複数の関数呼び出しに対して、纏めてエラー・リカバリさせたい時。
|
14
|
+
0. 複数の関数呼び出しに対して、纏めてエラー・リカバリさせたい時。
|
15
|
-
多重に関数呼び出しされている奥のほうで発生したエラーを遠くの呼び出し元でエラー・リカバリさせたい時。
|
15
|
+
0. 多重に関数呼び出しされている奥のほうで発生したエラーを遠くの呼び出し元でエラー・リカバリさせたい時。
|
16
16
|
(後、C++では例外を投げる処理は重いので、頻繁に動作する正常系処理では例外を投げないようにしています。)
|
17
17
|
|
18
18
|
と書いてる私はC++erです。でも、バリバリOOPしてますのでOOP的な共通事項について回答させて頂きました。
|