新人編集者のJava学習物語 初級編

新人編集者のJava学習物語 初級編

最終回 新人編集者、どこが世界をまたに掛けるエンジニアだ!

荒井亜子
2008/4/1

編集長にダメの烙印(らくいん)を押された新人編集者が、業務の合間に身を削って、必死でプログラミングを学習し、学んだことを皆さんにお伝えする連載。「こんな奴でも頑張っているのか」と、これからJavaを始める人や、一度Javaで挫折をした人にはぜひ読んで糧にしていただきたい。記事の最後には、Javaの講師よりアドバイスを掲載

  学習カリキュラム: 例外処理、パッケージ

 前回の記事「extendsで恋も授業も延長だ!」では、継承について学んだ新人編集者。講習会では、K崎さんというITエンジニアの良き先輩にも恵まれ、Javaの勉強がますます楽しくなってきたところ。でも、実は講習会は今日が最終日なのです。いつもは天真爛漫な新人編集者も、今日ばかりはしんみりしたムードを醸し出しています。

例外と例外処理

新人編集者(以下、新人) 今日で講習会も最後か。最後の授業くらいはまじめに受けよう

K崎 おいおい! いままでは何だったんだ?

新人 いままでも一生懸命でしたけど、今日は例外です! 最後の授業だし、特別に気合いを入れて勉強します

先生 今日は例外といえば、今日の範囲は例外ですよ

新人 先生、さむ〜い! しかも今日は(ギャグ)飛ばすね

先生 やれやれ、手の焼ける新人とも今日が最後だと思うと、うれしくてテンション上がってしまいますね

新人 ひどい! いくら出来の悪い生徒だといってもあんまりだ(泣)。ぐれてやるっ(プリプリ)

先生 冗談ですよ(笑)。ところで、皆さんはプログラムの実行結果でコンパイルエラー以外のエラー表示(ソースコード1)を見たことはないですか?

C:\Java>javac Reigai1.java
C:\Java>java Reigai1
Exception in thread "main" java.lang.ArithmeticException: / by zero
 at Reigai1.main(Reigai1.java:3)  
C:\Java>
ソースコード1 コンパイルエラー以外のエラー表示の例

新人 Exceptionていうの、見たことある。コンピュータが考え事でもしてるのかなと思っていままでスルーしてたけど

先生 例外というのは、プログラム実行時に発生するエラーのことです。このようなエラーが発生したときに、それを検知し、対処する仕組みがあります。Javaでは、あらかじめある条件において発生する例外のクラスがいくつか定義されています。ソースコード1は、例外が発生したときの処理結果です

新人 う〜ん、実際見てみないと分かんないかも。例えばどういうこと?

先生 ソースコード2を見てみましょう。ソースコード1を実行結果に持つプログラムです

class Reigai1{
  public static void main (String[] args) {
    int i = 10/0; // 10を0で割った
  }
}
ソースコード2

先生 ソースコード2のように数値を0で割ることはできません。よって、ArithmeticExceptionという整数を0で割った結果、発生する例外が表示されます。ほかにも、定義している配列の範囲外を利用したりすると、ArrayIndexOutOfBoundsExceptionという表示が出ます

新人 例外が起こらないように予防する方法はないんでしょうか?

先生 例外が起こりそうなところに例外処理を書くことで、エラーが発生したときに対応するプログラムを作ることができます(ソースコード3)

class Reigai2{
  public static void main (String[] args) {

    try { // tryブロック
      int i = 10/0; // 10を0で割った
    }

    catch (ArithmeticException x) { //  catchブロック
      System.out.println("整数を0では割れないよ〜ん");
    }
  }
}

ソースコード3 try‐catchブロックの例

先生 ソースコード3は、try‐catchブロックの例です。仮にtryブロックの{ }内で例外が起こると、プログラムは処理を中断します。例外がcatchブロックの( )内の例外のクラスと一致していればcatchブロックの{ }内の処理が行われます

try‐catchブロックの構文

try {
  例外が起こりそうな処理
}

catch(例外クラス名 変数名) {
  例外発生時に行う処理
}

finally { // finallyブロックは省略可
  例外発生の有無によらず行う処理
}

新人 文法は分かるけど……、このトライキャッチだか、ナイスキャッチだかって、実際使うことあるんですか?

先生 例外処理は、開発現場ではとてもよく使いますよ。例えば、在庫管理システムの入力フォームがあったとします。もし、その入力フォームにユーザーがマイナスの値を入力したらどうでしょう?

新人 在庫がマイナスになってしまう!

先生 そうですね。在庫のようにマイナスが出てはいけないところでマイナスの値が入力された場合、エラーとしてわざと例外が出るように例外処理を使います

新人 業務によって、エラーを自分で作れるんだ! うほ。エラーをナイスキャッチじゃん

パッケージの意味を知る

今回のインデックス
 例外処理、try-catchでナイスキャッチ☆ (1ページ)
 鬼編集長再び現る……! (2ページ)

自分戦略研究所、フォーラム化のお知らせ

@IT自分戦略研究所は2014年2月、@ITのフォーラムになりました。

現在ご覧いただいている記事は、既掲載記事をアーカイブ化したものです。新着記事は、 新しくなったトップページよりご覧ください。

これからも、@IT自分戦略研究所をよろしくお願いいたします。