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

回答編集履歴

2

思い出話加筆。

2018/08/29 16:46

投稿

Hiroshi-Aoki
Hiroshi-Aoki

スコア804

answer CHANGED
@@ -8,8 +8,10 @@
8
8
  ポイントは「状態を持つか否か」です。(計算機でいうなら電卓のメモリ機能のような)
9
9
  例外の良い点は、特段自分で実装しなくともオン・デマンド(on demand)で異常を自発的に通知してくれることですよね。自分が油断しててもプログラムがフォローしてくれる。防御力が高いです。
10
10
  ただし、どこで何が起きたかお知らせしてくれるだけ。お知らせに応じた対応は自分でやらないといけないのですが、そこまで油断していると、後で問題が起きたりします。例外に応じて、適切な状態に戻したり、変更したりする必要がでてくるわけです。すると例外によってcase by caseで対応が必要なってきちゃいます。だったら、先にわかるものは先に片付けておこうと思うわけで、事前判断しようと考えます。そうすれば状態を戻すようなことを考えずに済むから。例外だけだとちょっと足りないんですよね。
11
+ (昔はJavaのDBにおけるConnectionのCloseし忘れで、DBの最大接続数食いつぶすとかありましたな。)
11
12
 
12
13
  方や事前判断で戻り値を返すとすると、呼び出し元で異常の種類を知りたいなんてことになった場合、戻り値でしかお知らせできないので、0=正常、1は警告、2は…なんて話なり、情報が足りない文字情報も欲しいなんてなれば戻り値はクラスでなんて話にもなっちゃってインターフェイスの仕様変更で面倒です。影響範囲は全部修正・テストなんてことになってコストかかっちゃいます。この点は例外の機構が助かります。正常ケースには影響を及ぼさず、別途エラークラスを作る(takahasimさんのやつ)ことをすれば、case by caseを的確に必要かつ十分な情報を添えて通知することが可能です。なので戻り値返しじゃなくて、例外を使いたくなるんですよね。例外は通例ではない例外への対応力を上げるのにとても便利なんです。
14
+ (int型の戻り値の関数で、値ごとに意味はなんだ?定数か?なんだ直書きだし定数と意味ちげぇとか。)
13
15
 
14
16
  ということで、「事前に判断して、自分で例外を発行する」という手を私は取ります。
15
17
 

1

誤字修正。

2018/08/29 16:46

投稿

Hiroshi-Aoki
Hiroshi-Aoki

スコア804

answer CHANGED
@@ -7,9 +7,9 @@
7
7
 
8
8
  ポイントは「状態を持つか否か」です。(計算機でいうなら電卓のメモリ機能のような)
9
9
  例外の良い点は、特段自分で実装しなくともオン・デマンド(on demand)で異常を自発的に通知してくれることですよね。自分が油断しててもプログラムがフォローしてくれる。防御力が高いです。
10
- ただし、どこで何が起きたかお知らせしてくれるだけ。お知らせに応じた対応は自分でやらないといけないのですが、そこまで油断していると、後で問題が起きたりします。例外に応じて、適切な状態に戻したり、変更したりする必要でてくるわけです。すると例外によってcase by caseで対応が必要なってきちゃいます。だったら、先にわかるものは先に片付けておこうと思うわけで、事前判断しようと考えます。そうすれば状態を戻すようなことを考えずに済むから。例外だけだとちょっと足りないんですよね。
10
+ ただし、どこで何が起きたかお知らせしてくれるだけ。お知らせに応じた対応は自分でやらないといけないのですが、そこまで油断していると、後で問題が起きたりします。例外に応じて、適切な状態に戻したり、変更したりする必要でてくるわけです。すると例外によってcase by caseで対応が必要なってきちゃいます。だったら、先にわかるものは先に片付けておこうと思うわけで、事前判断しようと考えます。そうすれば状態を戻すようなことを考えずに済むから。例外だけだとちょっと足りないんですよね。
11
11
 
12
- 方や事前判断で戻り値を返すとすると、呼び出し元で異常の種類を知りたいなんてことになった場合、戻り値でしかお知らせできないので、0=正常、1は警告、2は…なんて話なり、情報が足りない文字情報も欲しいなんてなれば戻り値はクラスでなんて話にもなっちゃってインターフェイスの仕様変更で面倒です。影響範囲は全部修正・テストなんてことになってコストかかっちゃいます。この点は例外の機構が助かります。正常ケースには影響を及ぼさず、別途エラークラスを作る(takahasimさんのやつ)ことをすれば、case by caseを的確に必要かつ十分な情報を添えて通知することができます。戻り値返しじゃなくて、例外を使いたくなるんですよね。例外は対応力を上げるのにとても便利なんです。
12
+ 方や事前判断で戻り値を返すとすると、呼び出し元で異常の種類を知りたいなんてことになった場合、戻り値でしかお知らせできないので、0=正常、1は警告、2は…なんて話なり、情報が足りない文字情報も欲しいなんてなれば戻り値はクラスでなんて話にもなっちゃってインターフェイスの仕様変更で面倒です。影響範囲は全部修正・テストなんてことになってコストかかっちゃいます。この点は例外の機構が助かります。正常ケースには影響を及ぼさず、別途エラークラスを作る(takahasimさんのやつ)ことをすれば、case by caseを的確に必要かつ十分な情報を添えて通知することが可能です。なので戻り値返しじゃなくて、例外を使いたくなるんですよね。例外は通例ではない例外への対応力を上げるのにとても便利なんです。
13
13
 
14
14
  ということで、「事前に判断して、自分で例外を発行する」という手を私は取ります。
15
15