Использование 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 рекомендуется для безопасного программирования.