#6 feature fuly implemented
[svn/Cll1h/.git] / demos / exceptions / advanced-failures.c
CommitLineData
eac5d6c7 1#include "cll1.h"
2
3void private_method(int i)
4{
5 if(i==2)
6 {
7 fail(LOCAL_FAILURE);
8 }
9 else if(i==6)
10 {
11 fail(EVIL_FAILURE);
12 }
13 else
14 {
15 printf("nuda #%d\n",i);
16 }
17}
18
19void some_job(int i)
20{
21 try
22 {
23 private_method(i);
24 private_method(i+1);
25 private_method(i+2);
26 }
27 else_switch_failures
28 {
29 case EVIL_FAILURE: puts("[serious error]"); pass_failure;
30 case LOCAL_FAILURE: puts("[non-fatal error detected]"); break;
31 default : puts("[sorry, vole, error]");
32 }
33}
34
35program
36{
37
38 try
39 {
40 some_job(1);
41 some_job(3);
42 some_job(6);
43 some_job(2);
44 some_job(7);
45 }
46 else
47 {
48 puts("sorry, vole, error!");
49 }
50
51 try
52 {
53 some_job(1);
54 some_job(2);
55 some_job(4);
56 some_job(7);
57 }
58 else_catch(EVIL_FAILURE)
59 {
60 puts("totaly screwed.");
61 }
62 else
63 {
64 puts("ahem... something went wrong.");
65 }
66}
This page took 0.197119 seconds and 4 git commands to generate.