
No.2ベストアンサー
- 回答日時:
>呼び出し元に入れとけば呼び出し先に入れり必要がないと考えておりますが、そうでもないのでしょうか?
そうではないです。
呼び出し元も、呼び出し先も「自分の事しか考えてない」ので、それぞれで、自分の都合に合わせた、以下のような例外への対応が必要です。
・パターンA「必要な例外処理は、自分を呼んでくれた呼び出し元でやってくれている」というのが明白な場合。
呼び出し先では、例外処理を書かなくても良い。例外処理は呼び出し元にすべて任せる。呼び出し先は、呼び出し元の例外処理で何が起きるか、一切関知しない。
・パターンB「必要な例外処理は、自分で処理する必要がある」というのが明白な場合。
呼び出し先では、自分の都合に合わせた例外処理を書く。
但し、自分が対処できない例外は、最初から例外としてキャッチしないか、キャッチした場合は例外を再スローして呼び出し元にすべて任せること。
例えば「例外は、C#のランタイムライブラリがやってくれる例外処理で充分である」と言う場合は、どのルーチンも「必要な例外処理は、自分を呼んでくれた呼び出し元(つまり、ランタイムライブラリのスタートアップルーチン)でやってくれている筈」なのが明白なので、例外処理を一切書かない。
例えば「ゼロ除算だけキャッチして警告を出したい」と言う場合、自分(呼び出し先)の関数内に例外処理を書く。
例えば「呼んだ先でゼロ除算が起きたら呼んだ先で例外処理してくれない」と言う場合、自分(呼び出し元)の関数内に例外処理を書く。
このように「誰に例外処理をさせるか?」により、関数内で例外処理を書いたり書かなかったりする。
これは「呼び出し元で書いてあるから、呼び出し先では要らないよね」という単純な話ではない。
No.3
- 回答日時:
呼出し元の関数では、Aと言う関数、Bと言う関数、Cと言う関数 を呼び出しているものとします。
呼出し元から呼び出された
Aという関数はうまくいき、
Bという関数で例外が発生
Cと言う関数は呼び出されずに
呼出し元は、どの関数で例外が発生したかを調査しない為
結果として処理としては必ず中断するしかありません。
呼出し先の関数で例外処理がされている場合、
Aという関数はうまくいき、
Bという関数で、例外が発生
Bは例外の処理で、戻り値に例外発生時の代替値を返す
Cという関数は、Bの戻り値(この場合、代替値)で処理を行う
結果として、必ずしも呼出し元の関数は中断しなくても良いという結果になる
No.1
- 回答日時:
そういうロジックにするならば、必要があるないという判断は、実装する人で行うべきです。
呼出元で捕捉されるとマズいかどうかは、ロジックを見ないと分かりませんから。
つまり、あなたが見て、あなたが不要だと感じるならば、不要です。
呼出元で捕捉していない例外は、呼出先で捕捉するでしょう。
呼出元で捕捉しているにも関わらず、呼出先で制御を変更させる限定的な例外が存在する場合、その例外は呼出先で捕捉するでしょう。
例外ポリシーをどのように策定して実装しているかで捕捉方法は変わってくるでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 自動車ローン・自動車保険・車両保険 凄い恥ずかしい質問ですが、車の任意保険、例えば、家の外壁で擦ったとかでも、修理代は出るものでしょうか 6 2022/12/25 20:40
- ライブ・コンサート・クラブ 渋谷のCLUBQUATTROで今度ヘッドホンを外してというライブがあり、行く予定です スタンディング 1 2022/09/07 21:44
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- その他(プログラミング・Web制作) Pythonで複数のメソッドをまとめて管理する方法について 1 2023/03/30 00:01
- 日本語 呼び方を知りたい ある事柄(A)についての本を読んでいて、全く本筋とは異なるが、気になる情報(B)が 5 2023/08/24 22:13
- その他(海外) 現在、アメリカに在住の主人を日本に呼び寄せるために、在留資格認定証明書を取得したのですが、有効期限の 1 2023/01/09 20:25
- 会社・職場 上司から急に呼び捨てされるようになりました 6 2022/12/07 13:01
- 料理教室 皆様の地域ではナスの味噌炒めのことをなんと呼びますか? 4 2023/08/07 08:42
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- 父親・母親 母は私を呼ぶ時にあだ名にちゃん付けで「○○ちゃん」と呼びます。田舎だし私があまり外に出るタイプでは無 4 2023/04/12 18:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
例外(throws)について
-
「タイプ初期化子が例外をスロ...
-
JSPからServletへの値の引渡し
-
CreateEventについて
-
threadの中でのメモリ??
-
例外処理がまったくわかりませ...
-
カンマ付数字をDBへ追加する...
-
デバッグのこつ
-
LISPで例外を発生させるには?
-
obj.property のundefined判定
-
おススメのJavaScriptエディタ
-
JSPからのパラメータチェック
-
アサーションと例外処理の違い...
-
URLを指定して、ソース文字列を...
-
PHPのpack関数をJavaで実装でき...
-
pictureBoxの例外処理
-
file操作時のエラー
-
C#でPHPの可変関数のような事が...
-
WMIスクリプトを使用してMACア...
-
正規表現の書き方が分かりません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「タイプ初期化子が例外をスロ...
-
VB.Net Object型 空かどうか
-
数字か文字列かを判定する関数
-
VBA Evaluate関数 型が一致しま...
-
【JAVA】与えられた金額を貨幣...
-
VC++におけるCStringの変換
-
連続する「\\」をひとつの「\\...
-
文字列からダブルクオートの削除
-
C#の捕捉されない例外処理の対...
-
ファイルダイアログを開いた時...
-
C# マルチスレッドにおける例外...
-
0除算の例外処理ができない!!...
-
時間の取得
-
Timestamp型への変換について(J...
-
例外ってIf文の中に入れますか...
-
Excelでのエラー
-
文字列が数字のみで構成されて...
-
VB.NETで16進数が正しいかどう...
-
String型の日付(2005/11/25)の...
-
VBA 400エラー 1004エラー
おすすめ情報