// Draft memory management test. (remember -fexceptions) // Outdated: The integer constant exceptions need to be replaced with virtual // exceptions for the new system. #include #include "except-mac.hfa" TRIVIAL_EXCEPTION(yin) TRIVIAL_EXCEPTION(yang) int main() { try { yin a; THROW(&a); } catch( yin * err ) { printf("First Caught\n"); try { yang b; THROW(&b); } catch( yang * err ) { printf("Both Caught\n"); } } printf("Part A Complete\n"); try { try { yang c; THROW(&c); } catch( yang * err ) { printf("First Catch and rethrow\n"); throw; } } catch( yang * err ) { printf("Second Catch\n"); } printf("Part B Complete\n"); try { try { yin d; THROW(&d); } catch( yin * err ) { printf("Throw before cleanup\n"); yang e; THROW(&e); } } catch( yang * err ) { printf("Catch after cleanup\n"); } printf("Part C Complete\n"); try { try { yin f; THROW(&f); } catch( yin * err ) { printf("Caught initial throw.\n"); try { yang g; THROW(&g); } catch( yang * err ) { printf("Caught intermediate throw.\n"); } throw; } } catch( yin * err ) { printf("Caught final throw.\n"); } printf("Part D Complete\n"); }