Попробуйте скомпилировать с -fcxx-exceptions
.
Небольшая очистка вашего кода, используя div
, так как имя функции совпало с именем в stdlib.h
Также попытался сделать вывод ошибок более различимым.
#include <iostream>
#include <exception>
using namespace std;
struct ZeroError{
int err;
ZeroError(int e){err = e;}
};
int divide(int a,int b)
{
if (b == 0)throw int(10);
return a/b;
}
int main()
{
try{
int x = divide(10,0);
cout << x << endl;
}
catch(int z){
cout << "Exception: " << z << endl;
}
}
Компиляция с флагом, кажется, прекрасно работает:
% clang++ -fcxx-exceptions foo.cc
% ./a.out
Exception: 10
% clang++ --version
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.1.0
Thread model: posix