//$BK,1$WARNING:$BK,0$ Don't return out of a catch{}. This //might get fixed. #define ECP_1 1 #define ECP_2 2 #define ECP_3 3 #define ECP_4 4 void Show() { I4 i; coutln "Fs->except_argc=",Fs->except_argc; for (i=0;iexcept_argc;i++) PrintF("Fs->except_argv[%d]=%08X\r\n",i,Fs->except_argv[i]); } U4 Pmt(I4 i) { cout i; return YorN; } void D1() { coutln "D1"; if (Pmt(1)) throw(ECP_1); if (Pmt(2)) throw(ECP_2,33,55,66); if (Pmt(5)) throw; } void D2() { coutln "D2"; try { D1; if (Pmt(4)) throw(ECP_4); } catch { coutln "D2 handler"; Show; if (Fs->except_argc>0) { if (Fs->except_argv[0]==ECP_1) { coutln "Caught in D2"; Fs->catch_except=TRUE; } } } } void Demo() { try { D2; if (Pmt(3)) throw; } catch { coutln "Demo handler"; Show; Fs->catch_except=TRUE; } } Demo;