Использование Scanner
для чтения файлов (или ввода другого типа) может быть крайне неэффективным в ситуациях среднего и большого масштаба. Если у вас есть проблемы с эффективностью чтения тысяч или миллионов строк, я настоятельно рекомендую вам использовать класс BufferedReader. Пример использования BufferedReader для чтения строки из System.in
отображается ниже:
public static void main(String[] args) throws Exception {
String line = null;
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));
try {
/* This is protected code. If an problem occurs here, catch block is triggered */
while ((line = br.readLine()) != null){
System.out.println(line);
}
}
catch (IOException e){
throw new IOException("Problem reading a line",e);
}
}
IOException следует использовать в try/catch
блоке так, может быть инициирован каждый раз, когда защищенный код внутри try
страдает от «исключительного» поведения, таких как ошибка , У Java есть свои Исключения, которые бросаются, когда происходит подобная ситуация. Например, ArrayIndexOutOfBoundsException
сбрасывается, когда вы определяете массив a
размера n
и пытаетесь получить доступ к позиции a[n+1]
где-то в вашем коде. Как ArrayIndexOutOfBoundsException
, есть много других классов исключений, которые вы можете бросить и настроить с помощью собственных сообщений. Код, подходящий для исключения, должен быть помещен в защищенную зону в блок try. Когда исключение возникает в этом блоке, исключение будет обрабатываться в блоке catch с ним.
Посмотрите, что вам не нужно создавать операторы if/else
, чтобы предугадать ситуацию с ошибкой и выбросить исключение для каждого случая. Вам просто нужно связать возможные ситуации исключения между try
и catch
блоком. Подробнее о try/catch blocks рекомендуется для безопасного программирования.
Учебное пособие по исключению солнца: http://java.sun.com/docs/books/tutorial/essential/exceptions/index.html – BalusC