Выход из jshell с кодом ошибки

Как я /exit сеанс jshell с ненулевым кодом ошибки?

  • /exit выходы: процесс завершен с кодом выхода 0
  • /exit 1 выходы: процесс завершен с кодом выхода 0
  • throw new Error("1") Выход: java.lang. Ошибка: 1 at (#24:1)`и процесс завершен с кодом выхода 0
  • System.exit(1) выходы: состояние двигателя прекращено. Восстановите определения с помощью: /reload -restore ... и сеанс jshell не завершится.

Команда bash вроде set -e не доступен.

1 ответ

Решение

Теперь JShell поставляется с JDK 10 и более поздними версиями и представляет новую версию /exit который принимает необязательный фрагмент в качестве аргумента. Этот фрагмент оценивается по коду ошибки, который будет возвращен вызывающему процессу. См. http://mail.openjdk.java.net/pipermail/kulla-dev/2017-November/002129.html для получения подробной информации.

Вот текст справки для нового /exit команды, использующие jdk-10+ea-33:

|  Welcome to JShell -- Version 10
|  For an introduction type: /help intro

jshell> /help exit
|
|  /exit
|
|  Leave the jshell tool.  No work is saved.
|  Save any work before using this command
|
|  /exit
|       Leave the jshell tool.  The exit status is zero.
|
|  /exit <integer-expression-snippet>
|       Evaluate the snippet.  If the snippet fails or is not an integer expression,
|       display the error.  Otherwise leave the jshell tool with the
|       value of the expression as the exit status

jshell> /exit 123
|  Goodbye (123)

Примечание для JDK 9: вы не можете использовать /exit выйти из сеанса jshell на JDK 9 с ненулевым кодом ошибки. См. https://bugs.openjdk.java.net/browse/JDK-8185840 для получения подробной информации.

Другие вопросы по тегам