@interface kException : kObject
{
@private
kString* s;
}
+ (kException*)new:(kString*)e, ...;
+ (void)raise:(kString*)e, ...;
- (kException*)init:(kString*)e, ...;
- (kException*)init:(kString*)e :(kArgs)args;
- (void)raise;
@end
@implementation kException
+ (kException*)new:(kString*)e, ...
{
va_list args;
va_start(args, e);
kException *x = [[kException alloc] init:e :args];
va_end(args);
return x;
}
+ (void)raise:(kString*)e, ...
{
va_list args;
va_start(args, e);
[[[kException alloc] init:e :args] raise];
va_end(args); // Not needed!
}
- (kException*)init:(kString*)e, ...
{
if(self = [super init])
{
va_list args;
va_start(args, e);
s = [kString new:e :args];
va_end(args);
}
return self;
}
- (kException*)init:(kString*)e :(kArgs)args
{
if(self = [super init])
s = [kString new:e :args];
return self;
}
- (void)raise
{
printf("%s", [s cString]);
@throw self;
}
@end
Copyright © 2025 Rui Cuco. All rights reserved.