Выход из jshell с кодом ошибки
Как я /exit
сеанс jshell с ненулевым кодом ошибки?
/exit
выходы: процесс завершен с кодом выхода 0/exit 1
выходы: процесс завершен с кодом выхода 0throw new Error("1")
Выход: java.lang. Ошибка: 1 at (#24:1)`и процесс завершен с кодом выхода 0System.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 для получения подробной информации.