[英]How can I close BufferedReader in the while loop
當我嘗試在while循環中關閉BufferedReader時,它將引發IOException: Stream closed
當循環第二次執行時, IOException: Stream closed
。
我的代碼是這樣的:
import java.io.*;
class Test {
public static void main(String[] args) {
int option = 0;
BufferedReader br = null;
while (option != -1) {
try {
br = new BufferedReader(new InputStreamReader(System.in));
try {
option = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
option = -1;
}
br.close();
} catch (IOException e) {
System.err.println(e);
System.exit(-4);
}
System.out.println(option);
}
}
}
我應該怎么做才能關閉BufferedReader? 提前致謝。
我如何在while循環中關閉BufferedReader
您正在 while
循環中關閉它,這就是問題所在。
在循環之前將其打開,並且完全不要將其關閉,因為它包裹在System.in
,無法重新打開。
你可以做幾件事
try {
br = new BufferedReader(new InputStreamReader(System.in));
try {
option = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
option = -1;
}
br.close();
} catch (IOException e) {
System.err.println(e);
br.close();
System.exit(-4);
}
}
如果您使用的是最新版本
try {
br = new BufferedReader(new InputStreamReader(System.in));
try {
option = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
option = -1;
}
} catch (IOException e) {
System.err.println(e);
System.exit(-4);
} finally {
br.close();
}
如果發生異常,則代碼將立即前進到catch語句,然后繼續執行finally語句(如果存在)。
同樣,異常處理的全部要點是要照顧可能發生的異常。 通常,您不希望在異常中退出系統-因為如果您始終不處理異常,則代碼將終止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.