過去の日記

2005-09-01 ヘロヘロ〜

サブクラスのメソッドでの例外 [hatena][tech][java]

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

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

ここは逆に「制限事項です」という口調で説明してくれた方が判りやすかったハズ。
「サブクラスのメソッドがスローする例外は、『スーパークラスのメソッドがスローする例外とそのサブクラス』以外のものにしてはいけない」と考えるべき。

+--java.io.IOException
      |
      +--java.io.ObjectStreamException
            |
            +--java.io.OptionalDataException

という階層になっているExceptionがある。


Aクラスのhogeメソッドが

void hoge() throws ObjectStreamException

で宣言されていたとする。

A a = new ???();

try {
  a.hoge();
}
catch (ObjectStreamException ex) {
  /*何か適切な処置を*/
}

というソースを書く必要がでてくる。


AのサブクラスBのhogeメソッドが

void hoge() throws OptionalDataException

と宣言されていたとしよう。

A a = new B();

try {
  a.hoge();
}
catch (ObjectStreamException ex) {
  /*何か適切な処置を*/
}

という使い方になる。
OptionalDataException は ObjectStreamException のサブクラスだから、このソースで、catch (ObjectStreamException ex) {} の中の処理に問題が生じることはないはずだ。


AのサブクラスCのhogeメソッドが

void hoge() throws IOException

と宣言されていたとしよう。

A a = new C();

try {
  a.hoge();
}
catch (ObjectStreamException ex) {
  /*何か適切な処置を*/
}

というソースになるわけだけど、/*何か適切な処置を*/の部分は、発生した例外が ObjectStreamException だと思って処置を書いている。
ところが、発生するかもしれいない例外は、IOException(のサブクラス)なわけで、 ObjectStreamException だと思って処置を書いたのでは駄目かもしれない、ということになる。
そのためコンパイルレベルで、サブクラスのメソッドのthrows句に書ける例外は、オーバーライドしたスーパークラスのメソッドのthrows句によって制限されている方が望ましい、ということになる。そういうことを説明した文なわけだ。


もっと極端な例だと、

void hoge() throws java.net.ProtocolException

なんてあったらもうどうしていいか判らない。


引き合いに出してるExceptionの例が悪いので上手く伝わらないかも。
もっと上手い例が無いかな?

エレメンタルジェレイド 同契 SOUND SIDE 買った [music]

エレメンタルジェレイド 同契 Re-No:1 SOUND-SIDE

  • アーティスト: 斉藤恒芳,梶浦由記,梶浦由記
  • 出版社/メーカー: ビクターエンタテインメント
  • 発売: 2005-08-24
  • ASIN: B000A38QUS
  • メディア: CD
  • amazon.co.jp詳細へ

外箱不要。
よくわかんないんだけどなんでオリジナルサウンドトラック2じゃないのだろう?


コーラスを重ねていくいつもの技法の曲は、梶浦由記だなぁ、と思って聞いた。
弦を重ねて作っている曲は新鮮味があってそっちの方が印象的だった。

グランディアII始めた [game]

IIIじゃないよ。


そういえば、グランディアIIが出た時にグランディアを再開した記憶もあるのだが、気のせいではないだろう。

風邪引いた [etc]

だるいなぁと思って寝ていたら体の節々が痛くなってきてこりゃおかしいと思って熱を測ったら38.0度あった。
というのが火曜日のこと。


今週はほぼメールチェック(Amazonマーケットプレイスで売れた物がないかどうか)ぐらいでしかPC立ち上げてない。



2005-08-26 金魚屋古書店出納帳

だから本棚の海の中は気持ちいいんだよね [comic]

昨日、テレキネシス再読→金魚屋古書店出納帳再読という流れで再読してた。

金魚屋古書店出納帳 上 IKKI COMICS

  • 作者: 芳崎 せいむ
  • 出版社/メーカー: 小学館
  • 発売: 2004-12-24
  • ASIN: 4091885519
  • メディア: コミック
  • amazon.co.jp詳細へ

金魚屋古書店出納帳 下 IKKI COMICS

  • 作者: 芳崎 せいむ
  • 出版社/メーカー: 小学館
  • 発売: 2004-12-24
  • ASIN: 4091885527
  • メディア: コミック
  • amazon.co.jp詳細へ

セドリ屋2人の会話。

ずっと
変わらない
価値なんてない


絶対的な
力を持った
確かな値打ちのものなんてない


だから
本棚の海の中は気持ちいいんだよね

そうやって


東にむかい


西に走り


何を残そうと
しているん
だろうな

心地よい。


愛かな

うわ、ちょっと恥ずかしいかも……。


2005-08-25 スーパーマリョーワールド

スーパーマリョーワールド [etc]

わんこ日記(2005-08-27) さんのところで見たのだけど、これスゴイ。

"Super Maryo World" - Javascript Virtual Machine

JavaScriptおそるべし。

いい売り方かも ゲームボーイミクロ [game]

Amazonが ゲームボーイミクロ+「PLAY-YAN micro & MediaStage セット」 お買い得パックという形でセット販売するみたい(予約受付中)。
いいかもねぇ。

ゲームボーイミクロ (ブラック) +「PLAY-YAN micro & MediaStage セット」 お買い得パック【メーカー生産終了】

  • 出版社/メーカー: 任天堂
  • 対象機種: GAMEBOY ADVANCE
  • ASIN: B000AS8N5G
  • 発売: 2005-09-13
  • amazon.co.jp詳細へ

ゲームボーイミクロ (シルバー) +「PLAY-YAN micro & MediaStage セット」 お買い得パック【メーカー生産終了】

  • 出版社/メーカー: 任天堂
  • 対象機種: GAMEBOY ADVANCE
  • ASIN: B000ASA7J6
  • 発売: 2005-09-13
  • amazon.co.jp詳細へ

ゲームボーイミクロ (ブルー) +「PLAY-YAN micro & MediaStage セット」 お買い得パック【メーカー生産終了】

  • 出版社/メーカー: 任天堂
  • 対象機種: GAMEBOY ADVANCE
  • ASIN: B000AY89YA
  • 発売: 2005-09-13
  • amazon.co.jp詳細へ

ゲームボーイミクロ (パープル) +「PLAY-YAN micro & MediaStage セット」 お買い得パック【メーカー生産終了】

  • 出版社/メーカー: 任天堂
  • 対象機種: GAMEBOY ADVANCE
  • ASIN: B000AS8N4M
  • 発売: 2005-09-13
  • amazon.co.jp詳細へ


2005-08-24 パブロフの犬ならぬ

パブロフの犬ならぬ…… [music][comic]

ラフマニノフのピアノコンツェルト2番を聞くとつい、のだめの5巻を読みたくなってしまう。

のだめカンタービレ(5) (KC KISS)

  • 作者: 二ノ宮 知子
  • 出版社/メーカー: 講談社
  • 発売: 2003-03-11
  • ASIN: 4063404234
  • メディア: コミック
  • amazon.co.jp詳細へ

――前にも同じ事を書いたような気もするけど。