例外処理
2013年3月20日:Java
以下の記事で、正方形を描写するプログラムを書きました。
この際に、入力に数字を入れないと以下のようなエラーが生じます。
このエラーを回避するために、例外処理というのをプログラムに追加します。
以前のプログラム
まず、以前のプログラムを以下に載せます。
private void btnShowActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//正方形の1辺の長さを取得
String str=txtField.getText();
int l=Integer.parseInt(str);
//画像の準備
Image img=createImage(250,250);
Graphics g=img.getGraphics();
//描写の開始
g.setColor(Color.BLUE);
g.fillRect(0,0,l,l);
g.dispose();
//ラベルに画像をかく
ImageIcon icon=new ImageIcon(img);
label.setIcon(icon);
}
このプログラムのいけないところはstrが数字でない可能性があるということです。
改良したプログラム
そこで、以下のように例外処理をいれました。
private void btnShowActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
//正方形の1辺の長さを取得
String str=txtField.getText();
int l;
try{
l=Integer.parseInt(str);
}catch(NumberFormatException ex){
return;
}
//画像の準備
Image img=createImage(250,250);
Graphics g=img.getGraphics();
//描写の開始
g.setColor(Color.BLUE);
g.fillRect(0,0,l,l);
g.dispose();
//ラベルに画像をかく
ImageIcon icon=new ImageIcon(img);
label.setIcon(icon);
}
例外が生じると「return」により実行が終わります。
これでエラーが起きなくなります。
例外処理の構文は以下のようになります。
try{
例外が発生する可能性のある処理
}catch(処理したい例外の型 引数){
例外が発生したときの処理
}
例外が生じる部分で使ってみるといいでしょう。
例外処理はNumberFormatExceptionの他にも、配列の範囲外となる例外のArrayIndexOutOfBoundsExceptionがあります。
例外の種類によって使い分けましょう。
著者:安井 真人(やすい まさと)
@yasui_masatoさんをフォロー