Вывод на консоль перед выполнением исключения времени выполнения - PullRequest
0 голосов
/ 06 марта 2020

У нас есть два похожих кода, оба из которых приводят к исключению RunTimeException. Однако один из кодов распечатает результаты + исключение, в то время как другой ТОЛЬКО выбрасывает исключение без результатов вплоть до момента, когда исключение выдается. Вы можете увидеть оба блока кода здесь, один закомментирован:

Первый случай:

public class ExceptionTest {

 public static void main(String[] args) {
    String letters = "abcdef";

    System.out.println(letters.length());
    System.out.println(letters.charAt(3));
    System.out.println(letters.charAt(6));

 }
}

Второй случай:

public class ExceptionTest {

 public static void main(String[] args) {
    int total = 0;
    StringBuilder letters = new StringBuilder ("abcdefgh");
    total += letters.substring(1, 2).length();
    total += letters.substring(6, 6).length();
    total += letters.substring(6, 5).length();

    System.out.println(total);

 }
}

Может кто-нибудь объяснить, почему это будет выводить только RuntimeException и не включать результаты в блок с комментариями?

Ответы [ 2 ]

0 голосов
/ 06 марта 2020
    String letters = "abcdef";

    System.out.println(letters.length());
    System.out.println(letters.charAt(3));
    System.out.println(letters.charAt(6)); // <--- fails

Этот код завершается с ошибкой в ​​закомментированной строке после выполнения System.out.println(letters.length()); и System.out.println(letters.charAt(3));. Таким образом, вы можете видеть два выхода.

int total = 0;

StringBuilder letters = new StringBuilder ("abcdefgh");

total += letters.substring(1, 2).length();
total += letters.substring(6, 6).length();
total += letters.substring(6, 5).length(); //<-- fails

System.out.println(total);

Этот код не работает до System.out.println(total);, поэтому нет вывода

0 голосов
/ 06 марта 2020

Вывод происходит из System.out.println (). Я думаю, что в закомментированной версии исключение вызвано подстрокой (6,5), которая предшествует println ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...