2010-11-07 47 views
8

Tôi đã đoạn mã sau lấy từ cplusplus.com:chức năng set_terminate không hoạt động đối với tôi

// set_terminate example 
#include <iostream> 
#include <exception> 
#include <cstdlib> 
using namespace std; 

void myterminate() { 
    cout << "terminate handler called\n"; 
    abort(); // forces abnormal termination 
} 

int main (void) { 
    set_terminate (myterminate); 
    throw 0; // unhandled exception: calls terminate handler 
    return 0; 
} 

Như có ngoại lệ nào trong mã này, nó cần phải gọi) chức năng myterminate (được thiết lập như là chấm dứt xử lý và nghĩa vụ ghi đè trình xử lý kết thúc mặc định.

Chương trình bị lỗi nhưng không gọi myterminate(). Tôi đang sử dụng Visual C++ 2008 Express Edition.

Sự cố với mã là gì?

Trả lời

10

Một khả năng - nếu bạn đang chạy chương trình bên trong trình gỡ lỗi VC++, trình gỡ lỗi bắt các ngoại lệ chưa được xử lý và nó có thể không trả về điều khiển trở lại chương trình đang chạy để chạy myterminate. Hãy thử chạy chương trình của bạn bên ngoài Visual C++.

+3

Yup. Bắt đầu chương trình bằng Ctrl + F5. –

+0

Đây có phải là lỗi trong trình gỡ lỗi không? – bjskishore123

+2

@ bjskishore123: Không, đó là một tính năng :) –

Các vấn đề liên quan