60 lines
647 B
Objective-C
60 lines
647 B
Objective-C
#include <objc/Object.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
static int made_try = 0;
|
|
|
|
int
|
|
thrower_try_body()
|
|
{
|
|
made_try++;
|
|
return (0);
|
|
}
|
|
|
|
static int made_finally = 0;
|
|
|
|
int
|
|
finally_body()
|
|
{
|
|
made_finally++;
|
|
return (0);
|
|
}
|
|
|
|
int
|
|
thrower()
|
|
{
|
|
@try
|
|
{
|
|
thrower_try_body();
|
|
@throw [Object new];
|
|
}
|
|
@finally
|
|
{
|
|
finally_body();
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
static int made_catch = 0;
|
|
|
|
int
|
|
main(int ac, char *av[])
|
|
{
|
|
@try
|
|
{
|
|
thrower();
|
|
}
|
|
@catch (id exc)
|
|
{
|
|
made_catch++;
|
|
[exc free];
|
|
}
|
|
if (made_try != 1)
|
|
abort ();
|
|
if (made_finally != 1)
|
|
abort ();
|
|
if (made_catch != 1)
|
|
abort ();
|
|
return 0;
|
|
}
|