Không, không phải lúc nào. 255 là một số Unix, thường được tạo ra bằng cách thoát với -1, không rõ làm thế nào bạn có thể thấy điều đó. Trên Windows, một tiến trình .NET thường thoát với giá trị mã ngoại lệ SEH, một quá trình có quá trình sụp đổ và chấm dứt. Thông thường -532462766 (aka 0xE0434352) cho một ngoại lệ được quản lý. 3 cặp hex cuối cùng đánh vần "CCR", một từ viết tắt có ý nghĩa bị mất trong sương mù của thời gian, được khai báo là EXCEPTION_COMPLUS trong corexcep.h. Câu hỏi mẫu is here.
Một chương trình được xử lý tốt sẽ đăng ký AppDomain.CurrentDomain.UnhandledException và cung cấp mã thoát tốt hơn khi nó gọi Environment.Exit(), giống như được tạo bởi Marshal.GetHRForException(). Bạn sẽ nhận được mã thoát khớp với loại ngoại lệ được quản lý, các giá trị cho các loại ngoại lệ chuẩn được ghi lại trong tệp CorError.h SDK.
echo %errorlevel%
Nó không thấy rằng trong câu hỏi trước. % errorlevel% chỉ có thể có giá trị từ 0 đến 255, một hạn chế quay trở lại ngày MS-Dos. Vì mã ngoại lệ SEH sẽ luôn luôn lớn hơn, bạn thường luôn thấy 255. Chỉ cách sane để sử dụng% errorlevel% là giả sử chương trình thất bại khi nó không phải là 0. Trừ khi bạn có tài liệu cụ thể từ tác giả chương trình.
Nguồn
2016-02-09 14:49:21
Không tìm thấy gì trong [ECMA-335] (http://www.ecma-international.org/publications/standards/Ecma-335.htm), vì vậy tôi đoán mã thoát của thời gian chạy không được chuẩn hóa cho trường hợp ngoại lệ chưa được xử lý. – Gene
Hmm, đối với tôi trên Windows 10.0.14393, 'ECHO% ERRORLEVEL%' kết quả đầu ra '-532462766'. – binki