1*e903671bSAmir Ayupov #include <stdio.h> 2*e903671bSAmir Ayupov 3*e903671bSAmir Ayupov class ExcA {}; 4*e903671bSAmir Ayupov class ExcB {}; 5*e903671bSAmir Ayupov class ExcC {}; 6*e903671bSAmir Ayupov class ExcD {}; 7*e903671bSAmir Ayupov class ExcE {}; 8*e903671bSAmir Ayupov class ExcF {}; 9*e903671bSAmir Ayupov class ExcG {}; 10*e903671bSAmir Ayupov foo(int a)11*e903671bSAmir Ayupovvoid foo(int a) 12*e903671bSAmir Ayupov { 13*e903671bSAmir Ayupov if (a > 1) 14*e903671bSAmir Ayupov throw ExcG(); 15*e903671bSAmir Ayupov else 16*e903671bSAmir Ayupov throw ExcC(); 17*e903671bSAmir Ayupov } 18*e903671bSAmir Ayupov filter_only(int a)19*e903671bSAmir Ayupovvoid filter_only(int a) throw (ExcA, ExcB, ExcC, ExcD, ExcE, ExcF) { 20*e903671bSAmir Ayupov foo(a); 21*e903671bSAmir Ayupov } 22*e903671bSAmir Ayupov main(int argc,char ** argv)23*e903671bSAmir Ayupovint main(int argc, char **argv) 24*e903671bSAmir Ayupov { 25*e903671bSAmir Ayupov asm volatile ("nop;nop;nop;nop;nop"); 26*e903671bSAmir Ayupov try { 27*e903671bSAmir Ayupov try { 28*e903671bSAmir Ayupov asm volatile ("nop;nop;nop;nop;nop"); 29*e903671bSAmir Ayupov throw ExcA(); 30*e903671bSAmir Ayupov } catch (ExcA) { 31*e903671bSAmir Ayupov asm volatile ("nop;nop;nop;nop;nop"); 32*e903671bSAmir Ayupov printf("catch 2\n"); 33*e903671bSAmir Ayupov throw new int(); 34*e903671bSAmir Ayupov } 35*e903671bSAmir Ayupov } catch (...) { 36*e903671bSAmir Ayupov asm volatile ("nop;nop;nop;nop;nop"); 37*e903671bSAmir Ayupov printf("catch 1\n"); 38*e903671bSAmir Ayupov } 39*e903671bSAmir Ayupov 40*e903671bSAmir Ayupov try { 41*e903671bSAmir Ayupov asm volatile ("nop;nop;nop;nop;nop"); 42*e903671bSAmir Ayupov try { 43*e903671bSAmir Ayupov asm volatile ("nop;nop;nop;nop;nop"); 44*e903671bSAmir Ayupov filter_only(argc); 45*e903671bSAmir Ayupov } catch (ExcC) { 46*e903671bSAmir Ayupov asm volatile ("nop;nop;nop;nop;nop"); 47*e903671bSAmir Ayupov printf("caught ExcC\n"); 48*e903671bSAmir Ayupov } 49*e903671bSAmir Ayupov } catch (ExcG) { 50*e903671bSAmir Ayupov asm volatile ("nop;nop;nop;nop;nop"); 51*e903671bSAmir Ayupov printf("caught ExcG\n"); 52*e903671bSAmir Ayupov } 53*e903671bSAmir Ayupov 54*e903671bSAmir Ayupov return 0; 55*e903671bSAmir Ayupov } 56