Ngoại lệ hoạt động như thế nào từ quan điểm của Hệ điều hành?ai chịu trách nhiệm là nó để ném một ngoại lệ ?; Hệ điều hành hoặc quy trình?
Đến từ C++, tôi có thể hiểu ngoại lệ từ quan điểm của lập trình viên.
Khi ngoại lệ bị ném, ngăn xếp bắt đầu giãn ra và mỗi bản ghi kích hoạt có cơ hội bắt và xử lý ngoại lệ.
Nhưng ai có trách nhiệm loại bỏ ngoại lệ ngay từ đầu?
- Đây có phải là hệ điều hành gửi trình kích hoạt tới quy trình cho biết để nhập "trạng thái xử lý ngoại lệ" không?
- Quy trình có gọi và xử lý các ngoại lệ trong không gian chương trình riêng của nó không, chưa được phát hành với hệ điều hành?
Dưới đây là hai chương trình bị lỗi minh họa sự không chắc chắn của tôi.
int main(){
int i = 1/0; //did the OS tell the process to end?
return 0;
}
#include <exception>
int main(){
throw 11; //did the process tell the OS it needs to end?
return 0;
}
Câu trả lời nhanh: Ngoại lệ C++ hoàn toàn được xử lý. Nhưng tôi không có đủ kiến thức để đi xa hơn về câu trả lời về cách chính xác các ngoại lệ hoạt động. Chỉnh sửa: Trong trường hợp đầu tiên của bạn quá trình nhận được một tín hiệu có thể được chuyển đổi thành một ngoại lệ C++ –
không có tai nạn xảy ra trong một trong các ví dụ của bạn –
@ BЈовић Tôi nghĩ rằng bằng sự cố, Xploit có nghĩa là thoát với mã lỗi không 0. –