お世話になっております。JAVAに関して

質問があります。
ある書籍に、「サブクラスのメソッドがスローする例外は、スーパークラスのメソッドがスローする例外と同じか、そのサブクラスにする」とあります。

この、「そのサブクラスにする」という所が、サブクラスAのメソッドがスローする例外を、スーパークラスのサブクラスBにする、と解釈(?)しましたが、よく意味も分からないし、なぜそうするのかも分かりません。

正しい解釈をご存知の方がおりましたら、その意味と理由をご教授下さいますようお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/09/01 18:07:38
  • 終了:--

回答(2件)

id:Kumappus No.1

くまっぷす回答回数3784ベストアンサー獲得回数1852005/09/01 18:21:11

ポイント25pt

ここに書いてある例(親の愛…変な例だなあ)と同じことでしょう。

「サブクラスのメソッドがスローする例外は親クラスのスローする例外と同じかその*例外の*サブクラスにする。」

でしょう。

上記の例はまさに「例外(Exception)」のサブクラス定義です。

サブクラスで特有の例外を使いたい場合に使います。で、親がすでに拡張目的でExceptionのサブクラスを例外として使っていた場合は同じものかそのまたサブクラスを使うということ。

id:mimio17

ありがとうございます。

今、体調不良でしっかり目を通せない状態

ですが、親(スーパークラス)・兄(サブクラスA)・妹(サブクラスB)間での、サブクラスの”訴え”を親や兄がキャッチするのがなんとなく見えました。

やはりこういった”仕様”なのでしょうか。

うまく解釈できなくてごめんなさい。

2005/09/01 19:34:53
id:eofl No.2

eofl回答回数11ベストアンサー獲得回数02005/09/01 19:13:03

ポイント25pt

http://www.dummy.com/

Dummy at Dummy.com - Don't be a Dummy! Get the Right Business Executive Gifts and Employee Gifts

urlはダミーです。


サブクラスにするのは例外クラスです。

つまりサブクラスは例外をスローする場合、スーパークラスのものと同じ例外か、その例外をサブクラス化したものをスローしたほうがいいと言いたいわけです。


たとえば、そのサブクラスの参照をそのスーパークラスを受け取る関数に渡し、その関数内で例外の発生する処理をしたときを考えてください。

もし、関数がスーパークラスのスローする例外によって特別な処理をしていた場合、まったく違った例外をスローされてはたまりません。

id:mimio17

ありがとうございます。

サブクラスのスローする例外を、スーパークラスが持つ例外と一致するものにするか、その例外を更にサブクラス化したものにするのが良い、ということでしょうか。

>たとえば、そのサブクラスの参照をそのスーパ

>ークラスを受け取る関数に渡し、その関数内で

>例外の発生する処理をしたときを考えてくださ

>い。

>もし、関数がスーパークラスのスローする例外

>によって特別な処理をしていた場合、まったく

>違った例外をスローされてはたまりません

「スーパークラスが」ではなくて「スーパークラスを」でよいのですよね?

無知でごめんなさい、「全く違った例外をスロー

・・」は対処法がありそうな。。

2005/09/01 20:08:55

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません