※ ChatGPTを利用し、要約された質問です(原文:例外処理の付け方)
例外処理の使い方と注意点
このQ&Aのポイント
Javaを使った通信プログラムにおいて、write()やflush()、read()メソッドが正常に動作しているかを確認するために、例外処理を行いたいと考えています。質問文では、write()やflush()での送信処理、read()での受信処理のコードが記載されていますが、正しい例外処理の書き方がわからないため、アドバイスを求めています。
質問者が試した例外処理の書き方では、「書き込みエラー」や「読み込みエラー」といったエラーメッセージが表示されないことが問題となっています。これは、例外が発生していない可能性や、例外処理の書き方に誤りがある可能性が考えられます。質問者は正しい例外処理の書き方を知りたいとしています。
ネットで調べた結果、try-catch構文を使用することで例外処理を行うことができることがわかりました。質問者はwrite()やflush()、read()メソッドの結果によって例外処理を行いたいと考えており、例外が発生した場合にエラーメッセージを表示する方法を知りたいとしています。
javaを使って通信のプログラムを作成しています。
ホストAで送信データを作成し、そのデータをホストBに送信して、
ホストAが送信するのにかかった時間と、ホストBが受信するのにかかった時間を
計測するプログラムを作成しました。
送信と受信の処理を行うのですが、送信側では、write()でバッファに書き込んで、
fulsh()で書き込まれたバイトを出力ストリームに書き込みます。
受信側では、while((ch=in.read()) != -1)で送信データをすべて読み込ませます。
write()、fulsh()を使って送信し、read()で受信するのですが、
これらのメソッドが正常に動いたかどうかを調べたいのです。
ネットで方法を調べたのですが、try catchを使うことで例外処理が発生したら、
エラーを出力させることができることがわかりました。
もしurite(),fulsh(),read()が正常に起動しないならエラーを出したいのです。私なりに考えて以下のようにしました。
コードは以下のとおりです。送信部分、受信部分です。
送信側
int count = 0; // write()の回数
System.out.println("<データ送信処理>");
start = System.nanoTime(); // 計測開始時間
for (int i = 0; i < Data - 2; i++) {
try {
out.write(i);
count++;
} catch (IOException e) {
System.out.println(i + ":書き込みエラー");
}
}
try{
out.write('\\');
}catch(IOException e){
System.out.println("\\" + "書き込みエラー");
}
try{
out.write('s');
}catch(IOException e){
System.out.println("s" + "書き込みエラー");
}
count = count + 2;
out.flush();
stop = System.nanoTime(); // 計測終了時間
System.out.println("送信完了");
受信側
while (ch != -1) {
try{
ch = in.read();
}catch(IOException e){
System.out.println("読み込みエラー");
}
Count++;
if (ch == '\\') {
on = true;
} else if (on == true && (char) ch == 's') {
stopNs = System.nanoTime();
System.out.println("受信終了時間を確認");
break;
} else if (on == true && (char) ch != 's') {
on = false;
}
}
メソッドが正常に起動しない場合は、例外処理を行うということを
したいのですが、上の方法は正しいのでしょうか?
このようにして実行しても、「入力エラー」と言う表示はされません。
もしかしたら、ただ異常な動作が行われていないから、そういったエラーが
表示されないのかもと考えましたが、例外処理の書き方が違う可能性があると思い、
質問させていただきました。
どなたかアドバイスしていただけないでしょうか?
お礼
回答ありがとうございます。 確認していただきありがとうございました。