Nếu chương trình .net không đặt rõ ràng mã thoát trước khi chấm dứt (bằng cách gọi Environment.Exit()
/Appliation.Current.Shutdown()
/...), mã thoát cho quy trình đó là gì?Có thể dùng chương trình .net nào khi không sử dụng Environment.Exit()?
Việc chấm dứt bình thường có luôn dẫn đến mã thoát không và các trường hợp khác có thể là gì?
Theo this answer cho câu hỏi có liên quan Getting ExitCode From Exception Handler bởi Hans passant: "nếu một chương trình chết trên một ngoại lệ sau đó mã thoát của nó là thường giống như các ngoại lệ cơ bản mã lỗi".
Vì vậy, ngoại lệ uncaugth có thể xử lý mã thoát. Đây có phải là luôn luôn trường hợp và mã lỗi ngoại lệ cơ bản luôn được đảm bảo là khác với số không và trong một phạm vi cụ thể không? Có những trường hợp khác mà khung .net hoặc Windows có thể tự động đặt một mã thoát khác, chẳng hạn như một số sự cố không liên quan đến ngoại lệ (có thể xảy ra không?), Hoặc một nhiệm vụ bắt buộc bị giết?
Để đặt nó theo một cách khác, tôi có thể xác định bằng mã thoát cho dù chương trình chấm dứt trong bất kỳ thời trang bất thường nào hay không?
Hoặc nếu mã thoát bằng 0 có thể xảy ra trong một số trường hợp bất thường, tôi có thể bao gồm Environment.Exit(somevalue)
trong tất cả các đường dẫn chấm dứt bình thường cho chương trình hay không và đảm bảo rằng mã thoát này không bao giờ có thể xảy ra trong trường hợp xảy ra sự cố?
Động lực:
Kể từ not all exeptions are catchable mà không giải quyết nghiêm trọng, và vì có thể có những nguyên nhân khác cho việc chấm dứt chương trình bất ngờ khác ngoài excpetions còn tự do, đảm bảo rằng tất cả các đường dẫn mã gọi Environment.Exit() là không alwas càng tốt. Đây là lý do tại sao tôi quan tâm đến việc xác định xem mã thoát có thể được sử dụng để cho biết một chương trình có được thoát bình thường không.
Tôi đã thêm sự khác biệt giữa câu hỏi của tôi và bản sao được đề xuất. Trong khi câu trả lời thứ hai cũng giúp với một phần của câu hỏi của tôi, nó không hoàn toàn trả lời nó, và câu hỏi chính nó là hoàn toàn khác nhau. – HugoRune
Đề xuất về mặt tình cảm: bật Báo cáo lỗi Windows, với tùy chọn tạo minidumps được bật. Bằng cách đó bạn không chỉ có một mã thoát, mà còn là các bản ghi ngoại lệ và các ngăn xếp một phần mà bạn có thể đi qua một trình gỡ lỗi. (Giống như WinDBG bằng cách sử dụng trình gỡ rối SOS.) Ngay cả khi không có minidumps WER sẽ nắm bắt một số thông tin về chính thông báo lỗi. Đối với một ứng dụng nội bộ, bạn thậm chí có thể thiết lập một máy chủ cho các báo cáo sự cố được gửi tự động. [Trang] này (https://technet.microsoft.com/en-us/library/cc709644.aspx) trên TechNet có tổng quan tốt. – theB
Mã thoát là IMHO vô dụng. Thêm tại đây: http://stackoverflow.com/questions/4344923/process-exit-code-when-process-is-killed-forcibly –