So-net無料ブログ作成
検索選択

【Java】 例外は難しい ④

…といった辺りの論議も実に数年前からなされていたりする訳ですけれども、
IBMさんの文書
https://www.ibm.com/developerworks/jp/java/library/j-jtp05254/
でもやはり当初は「例外はキャッチして回復すべし」…が基本であったことが述べられてますね。

つまり良く見るコード
 public static void main(String[] args) throws Exception {
   ……
 }

は宜しくなかった訳です。敢えてこれを表現するなら

 public static void main(String[] args) {
  try {
   ……
  } catch (XxxException e) {
   System.exit(1);
  }
 }

という風にキャッチして「正常に」エラーコードを返すのが基本であった(過去形)と。
(ちなみに私は上の書き方を否定しません)


【歴史的な流れ(半分位憶測)】
Exceptionは「全て」キャッチして回復すべし!

いやいや、何だかtry-catchだらけで面倒くせーし、コードもきったないんですけどー

事前にチェックできるもんは、免除していいんじゃね?
よっしゃ、RuntimeException作ったろ!

うっは、これ便利すわ。
寧ろチェック例外が要らんかったんや!!

いやいや、ちょっと待って、チェック例外はチェック例外で有用だよ?

(´・ω・`)

という訳で結局どうすれバインダー。

超個人的な意見を言わせて頂くとですね、そもそも例外が要らないんです(´・ω・`)
だって知りたいのは処理がコケたかコケなかっただけじゃん。
Errorが有れば充分じゃないか?えぇ?

…と声高に言うと方々から反発を喰らいそうなので、これは心に仕舞っといてですね、
(割と本気で思ってはいる訳ですが)
「キャッチすべきではない重大な問題」であるErrorと「キャッチして回復」するExceptionの両極端だったのが、
やはり失敗だったんですね。
つまり「回復不能なあまり重要でもない問題」という考え方がすっぽ抜けてる。
(っていうかそれは美しくないと考えられたのだろう)
でも「回復不能なあまり重要でもない問題」って絶対有るんですよ。
例えばIOExceptionとかIOExceptionとかIOExceptionとかIOExceptionな。
(この話は後でする…筈)

で、現状それに対してウザさ解消だけの為に後付けやっつけで追加されたような
RuntimeExceptionを使っている訳です。ハッキリ言って訳が分からないよ!!
Errorだろそれ?Errorだるぉぉぉぉぐわぁぁぁぁぁっ!!!
…と言いたくなるもんです。

っていうかねErrorは「重大な問題」であって「VMの問題」なんて一言も述べられてないのに
VMエラーにしか使ったらダメという通説がまかり通ってしまったのがまぁ不幸ですわな。
コメント(0) 
共通テーマ:資格・学び

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。