0
我不明白C++,java或其他高級語言如何支持異常處理工作? 我知道,如果我寫一個應用程序將在用戶模式下運行,並且如果它上升一個像零分割的異常,系統在內核模式下調用中斷例程或使用我的try/catch塊?差異內核異常處理和編程語言異常處理
我不明白C++,java或其他高級語言如何支持異常處理工作? 我知道,如果我寫一個應用程序將在用戶模式下運行,並且如果它上升一個像零分割的異常,系統在內核模式下調用中斷例程或使用我的try/catch塊?差異內核異常處理和編程語言異常處理
什麼,我想說的是: 當我寫在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用來解決異常的具體步驟是什麼?
你的問題不清楚!你能再添加更多細節來解釋這個問題嗎? – vendettamit
操作系統內核不處理這樣的異常。它只是檢測處理器陷阱,並確保它傳遞給用戶空間。通過適用於操作系統的任何機制,例如Unix上的信號和Windows上的SEH。然後由語言運行時決定將其轉化爲語言特定的異常。任何一本關於操作系統設計的好書都會解釋這一點。 –