--- /dev/null
+#include "cll1.h"
+
+void private_method(int i)
+{
+ if(i==2)
+ {
+ fail(LOCAL_FAILURE);
+ }
+ else if(i==6)
+ {
+ fail(EVIL_FAILURE);
+ }
+ else
+ {
+ printf("nuda #%d\n",i);
+ }
+}
+
+void some_job(int i)
+{
+ try
+ {
+ private_method(i);
+ private_method(i+1);
+ private_method(i+2);
+ }
+ else_switch_failures
+ {
+ case EVIL_FAILURE: puts("[serious error]"); pass_failure;
+ case LOCAL_FAILURE: puts("[non-fatal error detected]"); break;
+ default : puts("[sorry, vole, error]");
+ }
+}
+
+program
+{
+
+ try
+ {
+ some_job(1);
+ some_job(3);
+ some_job(6);
+ some_job(2);
+ some_job(7);
+ }
+ else
+ {
+ puts("sorry, vole, error!");
+ }
+
+ try
+ {
+ some_job(1);
+ some_job(2);
+ some_job(4);
+ some_job(7);
+ }
+ else_catch(EVIL_FAILURE)
+ {
+ puts("totaly screwed.");
+ }
+ else
+ {
+ puts("ahem... something went wrong.");
+ }
+}