Test case for system exceptions in FeatureTest and try to catch more of them
This commit is contained in:
parent
2915712842
commit
56d5e193bb
|
@ -921,29 +921,31 @@ void segmentation_fault_handler(int sig)
|
|||
switch (sig) {
|
||||
case SIGSEGV:
|
||||
std::cerr << "Illegal storage access..." << std::endl;
|
||||
throw Base::Exception("Illegal storage access! Please save you work under a new file name and restart the application!");
|
||||
break;
|
||||
case SIGABRT:
|
||||
std::cerr << "Abnormal program termination..." << std::endl;
|
||||
throw Base::Exception("Break signal occoured");
|
||||
break;
|
||||
default:
|
||||
std::cerr << "Unknown error occurred..." << std::endl;
|
||||
break;
|
||||
}
|
||||
|
||||
#if defined(__GNUC__)
|
||||
// According to the documentation to C signals we should exit.
|
||||
exit(3);
|
||||
#endif
|
||||
}
|
||||
|
||||
void unhandled_exception_handler()
|
||||
{
|
||||
std::cerr << "Unhandled exception..." << std::endl;
|
||||
throw Base::Exception("Unhandled exception");
|
||||
|
||||
}
|
||||
|
||||
void unexpection_error_handler()
|
||||
{
|
||||
std::cerr << "Unexpected error occurred..." << std::endl;
|
||||
throw Base::Exception("Unexpected error occurred");
|
||||
|
||||
terminate();
|
||||
}
|
||||
|
||||
|
|
|
@ -112,13 +112,21 @@ FeatureTest::~FeatureTest()
|
|||
DocumentObjectExecReturn *FeatureTest::execute(void)
|
||||
{
|
||||
|
||||
int *i,j;
|
||||
float f;
|
||||
void *s;
|
||||
|
||||
switch(ExceptionType.getValue())
|
||||
{
|
||||
case 0: break;
|
||||
case 1: throw "Test Exeption";
|
||||
case 2: throw Base::Exception("FeatureTestException::execute(): Testexception");
|
||||
case 3: *i=0;printf("%i",*i);break; // seg-vault
|
||||
case 4: j=0; printf("%i",1/j); break; // int devision by zero
|
||||
case 5: f=0.0; printf("%f",1/f); break; // float devision by zero
|
||||
case 6: s = malloc(3600000000);break; // float devision by zero
|
||||
}
|
||||
|
||||
ExecCount.setValue(ExecCount.getValue() + 1);
|
||||
|
||||
ExecResult.setValue("Exec");
|
||||
|
|
Loading…
Reference in New Issue
Block a user