03. キーボードから読み込む(例外を発生) inOut.java
- 2006.08.13
- Java
続き。
例外を発生させる
「こんにちは。」を入力しリターンすると、「こんにちは。」が出力される。
次に、control + D を入力する。
$ java inOut こんにちは。 こんにちは。 例外が発生しました。
例外を表示する
System.our.printl( e ); を追加して例外を表示させるようにする。
//
// inOut.java
//
public class inOut {
public static void main( String[] args ){
byte[] buff = new byte[ 1024 ]; // 配列の定義をする
int n = 1;
while( n > 0 ) {
try {
n = System.in.read( buff ) ; // キーボード読み込み
System.out.write( buff, 0, n ); // 表示する
if( buff[0] == (byte)'q' ) {
break;
}
} catch( Exception e ) {
System.out.println( "例外が発生しました。");
System.out.println( e ) ; // この行を追加
System.exit( 1 ); // プログラムを終了する
}
}
}
}
実行
$ java inOut こんにちは。 こんにちは。 例外が発生しました。 java.lang.ArrayIndexOutOfBoundsException
「こんにちは。」を入力後、control + D を入力した。
例外の原因が、「 java.lang.ArrayIndexOutOfBoundsException」と表示される。
例外を発生した場所を表示させる
e.printStackTrace(); を追加する。
//
// inOut.java
//
public class inOut {
public static void main( String[] args ){
byte[] buff = new byte[ 1024 ]; // 配列の定義をする
int n = 1;
while( n > 0 ) {
try {
n = System.in.read( buff ) ; // キーボード読み込み
System.out.write( buff, 0, n ); // 表示する
if( buff[0] == (byte)'q' ) {
break;
}
} catch( Exception e ) {
System.out.println( "例外が発生しました。");
System.out.println( e ) ; // この行を追加
e.printStackTrace(); // この行も追加
System.exit( 1 ); // プログラムを終了する
}
}
}
}
実行
$ java inOut
こんにちは。
こんにちは。
例外が発生しました。
java.lang.ArrayIndexOutOfBoundsException
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:111)
at java.io.PrintStream.write(PrintStream.java:412)
at inOut.main(inOut.java:13) ← エラーの発生した場所は13行目
エラーが発せした場所が13行目だとわかる。
-
前の記事
03. 引数を受け取る CmdLine.java 2006.08.13
-
次の記事
00. ターミナルの設定 2006.08.13