2016-01-27 113 views
0

我不明白C++,java或其他高級語言如何支持異常處理工作? 我知道,如果我寫一個應用程序將在用戶模式下運行,並且如果它上升一個像零分割的異常,系統在內核模式下調用中斷例程或使用我的try/catch塊?差異內核異常處理和編程語言異常處理

+0

你的問題不清楚!你能再添加更多細節來解釋這個問題嗎? – vendettamit

+0

操作系統內核不處理這樣的異常。它只是檢測處理器陷阱,並確保它傳遞給用戶空間。通過適用於操作系統的任何機制,例如Unix上的信號和Windows上的SEH。然後由語言運行時決定將其轉化爲語言特定的異常。任何一本關於操作系統設計的好書都會解釋這一點。 –

回答

0

什麼,我想說的是: 當我寫在C簡單的代碼++比如像這樣:

#include <iostream> 
using namespace std; 

double divide(int a, int b) 
{ 
    if(b == 0) 
    { 
     throw "Division by zero condition!"; 
    } 
    return (a/b); 
} 

int main() 
{ 
    int x = 50; 
    int y = 0; 
    double z = 0; 

    try { 
    z = divide(x, y); 
    cout << z << endl; 
    }catch (const char* msg) { 
    cerr << msg << endl; 
    } 

    return 0; 
} 

並編譯它,我發現了一個軟件,一個異常程序內。 我的意思是,在執行代碼期間,CPU將嘗試執行x/y並引發異常。現在,在這種情況下誰處理這個錯誤: 1)進程un用戶模式將工作流程傳遞到我編寫的例外例程 或 2)系統切換到內核模式並拋出一個陷阱來運行中斷例程。

我不明白系統像linux或windows用來解決異常的具體步驟是什麼?