|
Spec-Zone .ru
спецификации, руководства, описания, API
|
try {
} finally {
}
try у оператора не должно быть a catch блокируйте, если у этого есть a finally блок. Если код в try у оператора есть многократные точки выхода и не связанный catch пункты, код в finally блок выполняется независимо от того как try из блока выходят. Таким образом имеет смысл обеспечивать a finally блокируйте всякий раз, когда есть код, который должен всегда выполняться. Это включает код восстановления ресурса, такой как код, чтобы закрыть потоки ввода-вывода.
catch (Exception e) {
}
Ответ: Этот обработчик ловит исключения типа Exception; поэтому, это ловит любое исключение. Это может быть плохой реализацией, потому что Вы теряете ценную информацию о типе выданного исключения и делающий Ваш менее эффективный код. В результате Ваша программа может быть вынуждена определить тип исключения прежде, чем это сможет выбрать лучшую стратегию восстановления.
try {
} catch (Exception e) {
} catch (ArithmeticException a) {
}
Exception; поэтому, это ловит любое исключение, включая ArithmeticException. Второй обработчик никогда не мог достигаться. Этот код не будет компилировать.int[] A;
A[0] = 0;classes.zip или rt.jar.)end of stream маркер.end of stream маркер, программа пытается считать поток снова.Ответ:
readList метод к cat метод так, чтобы это скомпилировало:
public static void cat(File file) {
RandomAccessFile input = null;
String line = null;
try {
input = new RandomAccessFile(file, "r");
while ((line = input.readLine()) != null) {
System.out.println(line);
}
return;
} finally {
if (input != null) {
input.close();
}
}
}
Ответ: код, чтобы поймать исключения показывают полужирным:
public static void cat(File file) {
RandomAccessFile input = null;
String line = null;
try {
input = new RandomAccessFile(file, "r");
while ((line = input.readLine()) != null) {
System.out.println(line);
}
return;
} catch(FileNotFoundException fnf) {
System.err.format("File: %s not found%n", file);
} catch(IOException e) {
System.err.println(e.toString());
} finally {
if (input != null) {
try {
input.close();
} catch(IOException io) {
}
}
}
}