差异内核异常处理和编程语言异常处理

时间:2016-01-27 20:27:21

标签: exception exception-handling

我不明白c ++,java或其他高级语言如何支持异常处理工作? 我知道如果我写一个应用程序将在用户模式下运行,如果它出现异常,如零分割,系统调用内核模式的中断例程或使用我的try / catch块???

1 个答案:

答案 0 :(得分: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)进程非用户模式将工作流传递给我写的异常例程 要么 2)系统在内核模式下切换并抛出陷阱以运行中断例程。

我不明白linux或windows等系统用于解决异常的具体步骤是什么?