Sorry, the language of this site is Japanese only.
トップページ ぬるぽ関連トップ

( ・∀・)<「ぬるぽ」体験記

さて、ここでは実際に「ぬるぽ」を発生させてみることにしよう。用意するものは…

1.パソコン本体(これが無いと始まらないね)
2.何でも(・∀・)イイ!!のでOS(ただし、後述のJava SEが用意されているものに限る)
3.Java SE(いわゆるJava開発キット。http://www.oracle.com/technetwork/java/javase/downloads/index.htmlか ら入手しる!!)
4.サンプルソースを打ち込むためのテキストエディタ(メモ帳やviでも十分事足りてしまう)

…これだけ揃えば、いつでもぬるぽが発生させられるぜぃw
まず、J2SEをインストールするところから始めるのだが、Java入門ページじゃあるまいし、ここでは省略。
次に、こんなソースを打ち込んでみる(nullpo01.java という名前でセーブしてね。基本的にクラス名とファイル名が違うとエラーになるから)。
打ち込むのが('A`)マンドクセな人は、ここからダウンロードしてね。
public class nullpo01
{
 public static void main(String args[]){
  int array[] = null;
  array[0] = 10; // この行でぬるぽが発生するぞ!!
 }
}

DOSプロンプト(コマンドプロンプト)を立ち上げて、コンパイル。
D:\PROG\Java>javac nullpo01.java

D:\PROG\Java>
エラーが出なければ、そのまま実行。
ここでメッセージが出力される。
このメッセージこそ、「ぬるぽ」が発生した証拠である。
D:\PROG\Java>java nullpo01
Exception in thread "main" java.lang.NullPointerException
        at nullpo01.main(nullpo01.java:5)

D:\PROG\Java>

…さて、ぬるぽを発生させられたところまではいいが、この方法では発生させた時点でABENDしてしまう。
ぬるぽが発生しない想定で組めば、これでも問題ないが、大抵はスローされた例外をキャッチさせてABENDを未然に防ぐ。
(てゆーか、ぬるぽを発生させない想定で組むことなんて不可能w)

そこで、ぬるぽ発生によるABENDを未然に防ぐ方法…ある意味これがホントの「ガッ」になるのかな?
単純にtry~catchでぬるぽが発生したときのハンドリング処理を追加するだけなんだけどねw
このソースを打ち込んでみる(nullpo02.java という名前でセーブしてね。基本的にクラス名とファイル名が違うとエラーになるから)。
打ち込むのが('A`)マンドクセな人は、ここからダウンロードしてね。
import java.lang.*;    // こいつを追加

public class nullpo02    // クラス名を変更しる!!
{
 public static void main(String args[]){
  int array[] = null;
  try {    // 例外が発生しそうな箇所をこいつで囲む!!
   array[0] = 10; // この行でぬるぽが発生するぞ!!
  } catch(NullPointerException e) {    // 不幸にも例外が発生したときに実行する処理
   System.out.println("ぬるぽ発生!!");
  }
  System.out.println("処理終了ォォ");
 }
}

コンパイルして実行すると、「ぬるぽ発生!!」と表示されたABENDではなくcatch内のprintlnメソッドによるメッセージ表示が出てくるではあ~りませんか。
しかもABENDしてない。その証拠に、最後の「処理終了ォォ」が表示されている。
D:\PROG\Java>java nullpo02
ぬるぽ発生!!
処理終了ォォ

D:\PROG\Java>