2017-06-18 47 views
6

Làm cách nào để /exit phiên jshell có mã lỗi khác 0?Thoát jshell với mã lỗi

  • /exit sản lượng: Process xong với mã exit 0
  • /exit 1 sản lượng: Process xong với mã exit 0
  • throw new Error("1") sản lượng: java.lang.Error ném: 1 tại (# 24 : 1) `và Quá trình hoàn tất với mã thoát 0
  • System.exit(1) sản lượng: Động cơ nhà nước bị chấm dứt. Khôi phục các định nghĩa với:/reload -restore ... và phiên jshell không bị chấm dứt.

Lệnh bash như set -e không khả dụng.

+0

Có bây giờ là một vấn đề về lỗi bảo tracker JDK: https://bugs.openjdk.java.net/browse/JDK-8185840 – Sormuras

+1

Phải, sự nâng cấp này được bao phủ theo JDK-8185840 mà chúng tôi dự định sửa trong bản phát hành tiếp theo JDK 18.3 (còn gọi là JDK 10). –

Trả lời

4

Bạn không thể sử dụng /exit để thoát khỏi phiên jshell bình thường với mã lỗi khác 0. Xem https://bugs.openjdk.java.net/browse/JDK-8185840 để biết chi tiết.

Nhưng nếu bạn bắt đầu jshell ở chế độ thực thi cục bộ (tức là nó không bắt đầu từ xa vm), bạn có thể sử dụng System.exit(1) để thoát vm cục bộ bằng mã lỗi bạn chọn.

ít bằng chứng về khái niệm runnig trên vỏ DOS:

jshell --execution local 
| Welcome to JShell -- Version 9 
| For an introduction type: /help intro 

jshell> System.exit(123) 

echo Exit Code is %errorlevel% 
Exit Code is 123 

Xem http://mail.openjdk.java.net/pipermail/kulla-dev/2017-August/002062.html để biết chi tiết.

Cập nhật cho Java 10

Java 10 sẽ giới thiệu một phiên bản mới của /exit mà phải mất một đoạn tùy chọn như một cuộc tranh cãi. Đoạn mã đó được đánh giá theo mã lỗi sẽ được trả lại cho quá trình gọi. Xem http://mail.openjdk.java.net/pipermail/kulla-dev/2017-November/002129.html để biết chi tiết.

Dưới đây là nội dung giúp đỡ cho /exit lệnh mới sử dụng jdk-10 + ea-33:

| Welcome to JShell -- Version 10-ea 
| 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) 
Các vấn đề liên quan