xref: /aosp_15_r20/external/antlr/runtime/ObjC/Framework/RuntimeException.m (revision 16467b971bd3e2009fad32dd79016f2c7e421deb)
1*16467b97STreehugger Robot//
2*16467b97STreehugger Robot//  RuntimeException.m
3*16467b97STreehugger Robot//  ANTLR
4*16467b97STreehugger Robot//
5*16467b97STreehugger Robot//  Created by Alan Condit on 6/5/10.
6*16467b97STreehugger Robot// [The "BSD licence"]
7*16467b97STreehugger Robot// Copyright (c) 2010 Alan Condit
8*16467b97STreehugger Robot// All rights reserved.
9*16467b97STreehugger Robot//
10*16467b97STreehugger Robot// Redistribution and use in source and binary forms, with or without
11*16467b97STreehugger Robot// modification, are permitted provided that the following conditions
12*16467b97STreehugger Robot// are met:
13*16467b97STreehugger Robot// 1. Redistributions of source code must retain the above copyright
14*16467b97STreehugger Robot//    notice, this list of conditions and the following disclaimer.
15*16467b97STreehugger Robot// 2. Redistributions in binary form must reproduce the above copyright
16*16467b97STreehugger Robot//    notice, this list of conditions and the following disclaimer in the
17*16467b97STreehugger Robot//    documentation and/or other materials provided with the distribution.
18*16467b97STreehugger Robot// 3. The name of the author may not be used to endorse or promote products
19*16467b97STreehugger Robot//    derived from this software without specific prior written permission.
20*16467b97STreehugger Robot//
21*16467b97STreehugger Robot// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22*16467b97STreehugger Robot// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23*16467b97STreehugger Robot// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24*16467b97STreehugger Robot// IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25*16467b97STreehugger Robot// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26*16467b97STreehugger Robot// NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27*16467b97STreehugger Robot// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28*16467b97STreehugger Robot// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29*16467b97STreehugger Robot// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30*16467b97STreehugger Robot// THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31*16467b97STreehugger Robot
32*16467b97STreehugger Robot#import "RuntimeException.h"
33*16467b97STreehugger Robot
34*16467b97STreehugger Robot
35*16467b97STreehugger Robot@implementation RuntimeException
36*16467b97STreehugger Robot
37*16467b97STreehugger Robot+ (id) newException
38*16467b97STreehugger Robot{
39*16467b97STreehugger Robot    return [[RuntimeException alloc] init];
40*16467b97STreehugger Robot}
41*16467b97STreehugger Robot
42*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
43*16467b97STreehugger Robot{
44*16467b97STreehugger Robot    return [[RuntimeException alloc] init:aReason];
45*16467b97STreehugger Robot}
46*16467b97STreehugger Robot
47*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
48*16467b97STreehugger Robot{
49*16467b97STreehugger Robot    return [[RuntimeException alloc] init:aReason userInfo:aUserInfo];
50*16467b97STreehugger Robot}
51*16467b97STreehugger Robot
52*16467b97STreehugger Robot+ (id) newException:(NSString *)aName reason:(NSString *)aReason;
53*16467b97STreehugger Robot{
54*16467b97STreehugger Robot    return [[RuntimeException alloc] initWithName:aName reason:aReason];
55*16467b97STreehugger Robot}
56*16467b97STreehugger Robot
57*16467b97STreehugger Robot+ (id) newException:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo;
58*16467b97STreehugger Robot{
59*16467b97STreehugger Robot    return [[RuntimeException alloc] initWithName:aName reason:aReason userInfo:aUserInfo];
60*16467b97STreehugger Robot}
61*16467b97STreehugger Robot
62*16467b97STreehugger Robot
63*16467b97STreehugger Robot- (id) init
64*16467b97STreehugger Robot{
65*16467b97STreehugger Robot    self = [super initWithName:@"RuntimeException" reason:@"UnknownException" userInfo:nil];
66*16467b97STreehugger Robot    return(self);
67*16467b97STreehugger Robot}
68*16467b97STreehugger Robot
69*16467b97STreehugger Robot- (id) init:(NSString *)aReason
70*16467b97STreehugger Robot{
71*16467b97STreehugger Robot    self = [super initWithName:(NSString *)@"RuntimeException" reason:(NSString *)aReason userInfo:(NSDictionary *)nil];
72*16467b97STreehugger Robot    return(self);
73*16467b97STreehugger Robot}
74*16467b97STreehugger Robot
75*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
76*16467b97STreehugger Robot{
77*16467b97STreehugger Robot    self = [super initWithName:@"RuntimeException" reason:aReason userInfo:aUserInfo];
78*16467b97STreehugger Robot    return(self);
79*16467b97STreehugger Robot}
80*16467b97STreehugger Robot
81*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason
82*16467b97STreehugger Robot{
83*16467b97STreehugger Robot    self = [super initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)nil];
84*16467b97STreehugger Robot    return(self);
85*16467b97STreehugger Robot}
86*16467b97STreehugger Robot
87*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
88*16467b97STreehugger Robot{
89*16467b97STreehugger Robot    self = [super initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo];
90*16467b97STreehugger Robot    return(self);
91*16467b97STreehugger Robot}
92*16467b97STreehugger Robot
93*16467b97STreehugger Robot- (NSString *) Description
94*16467b97STreehugger Robot{
95*16467b97STreehugger Robot    return [super reason];
96*16467b97STreehugger Robot}
97*16467b97STreehugger Robot
98*16467b97STreehugger Robot- (id) stackTrace:(NSException *)e
99*16467b97STreehugger Robot{
100*16467b97STreehugger Robot    NSArray *addrs = [e callStackReturnAddresses];
101*16467b97STreehugger Robot    NSArray *trace = [e callStackSymbols];
102*16467b97STreehugger Robot
103*16467b97STreehugger Robot    for (NSString *traceStr in trace) {
104*16467b97STreehugger Robot        NSLog( @"%@", traceStr);
105*16467b97STreehugger Robot        // TODO: remove special after testing
106*16467b97STreehugger Robot        if ([traceStr hasPrefix:@"main("] > 0)
107*16467b97STreehugger Robot            return traceStr;
108*16467b97STreehugger Robot        if (![traceStr hasPrefix:@"org.stringtemplate"])
109*16467b97STreehugger Robot            return traceStr;
110*16467b97STreehugger Robot    }
111*16467b97STreehugger Robot    return trace;
112*16467b97STreehugger Robot}
113*16467b97STreehugger Robot
114*16467b97STreehugger Robot@end
115*16467b97STreehugger Robot
116*16467b97STreehugger Robot@implementation CloneNotSupportedException
117*16467b97STreehugger Robot
118*16467b97STreehugger Robot+ (id) newException
119*16467b97STreehugger Robot{
120*16467b97STreehugger Robot    return [[CloneNotSupportedException alloc] init];
121*16467b97STreehugger Robot}
122*16467b97STreehugger Robot
123*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
124*16467b97STreehugger Robot{
125*16467b97STreehugger Robot    return [[CloneNotSupportedException alloc] init:aReason];
126*16467b97STreehugger Robot}
127*16467b97STreehugger Robot
128*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
129*16467b97STreehugger Robot{
130*16467b97STreehugger Robot    return [[CloneNotSupportedException alloc] init:aReason userInfo:aUserInfo];
131*16467b97STreehugger Robot}
132*16467b97STreehugger Robot
133*16467b97STreehugger Robot- (id) init
134*16467b97STreehugger Robot{
135*16467b97STreehugger Robot    self = [super initWithName:@"CloneNotSupportedException" reason:@"Attempted to clone non-cloneable object" userInfo:nil];
136*16467b97STreehugger Robot    return(self);
137*16467b97STreehugger Robot}
138*16467b97STreehugger Robot
139*16467b97STreehugger Robot- (id) init:(NSString *)aReason
140*16467b97STreehugger Robot{
141*16467b97STreehugger Robot    self = [super initWithName:@"CloneNotSupportedException" reason:(NSString *)aReason userInfo:nil];
142*16467b97STreehugger Robot    return(self);
143*16467b97STreehugger Robot}
144*16467b97STreehugger Robot
145*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
146*16467b97STreehugger Robot{
147*16467b97STreehugger Robot    self = [super initWithName:@"CloneNotSupportedException" reason:aReason userInfo:aUserInfo];
148*16467b97STreehugger Robot    return(self);
149*16467b97STreehugger Robot}
150*16467b97STreehugger Robot
151*16467b97STreehugger Robot@end
152*16467b97STreehugger Robot
153*16467b97STreehugger Robot@implementation ConcurrentModificationException
154*16467b97STreehugger Robot
155*16467b97STreehugger Robot+ (id) newException
156*16467b97STreehugger Robot{
157*16467b97STreehugger Robot    return [[ConcurrentModificationException alloc] init];
158*16467b97STreehugger Robot}
159*16467b97STreehugger Robot
160*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
161*16467b97STreehugger Robot{
162*16467b97STreehugger Robot    return [[ConcurrentModificationException alloc] init:aReason];
163*16467b97STreehugger Robot}
164*16467b97STreehugger Robot
165*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
166*16467b97STreehugger Robot{
167*16467b97STreehugger Robot    return [[ConcurrentModificationException alloc] init:aReason userInfo:aUserInfo];
168*16467b97STreehugger Robot}
169*16467b97STreehugger Robot
170*16467b97STreehugger Robot- (id) init
171*16467b97STreehugger Robot{
172*16467b97STreehugger Robot    self = [super initWithName:@"ConcurrentModificationException" reason:@"UnknownException" userInfo:nil];
173*16467b97STreehugger Robot    return(self);
174*16467b97STreehugger Robot}
175*16467b97STreehugger Robot
176*16467b97STreehugger Robot- (id) init:(NSString *)aReason
177*16467b97STreehugger Robot{
178*16467b97STreehugger Robot    self = [super initWithName:@"ConcurrentModificationException" reason:(NSString *)aReason userInfo:nil];
179*16467b97STreehugger Robot    return(self);
180*16467b97STreehugger Robot}
181*16467b97STreehugger Robot
182*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
183*16467b97STreehugger Robot{
184*16467b97STreehugger Robot    self = [super initWithName:@"ConcurrentModificationException" reason:aReason userInfo:aUserInfo];
185*16467b97STreehugger Robot    return(self);
186*16467b97STreehugger Robot}
187*16467b97STreehugger Robot
188*16467b97STreehugger Robot@end
189*16467b97STreehugger Robot
190*16467b97STreehugger Robot@implementation IllegalArgumentException
191*16467b97STreehugger Robot
192*16467b97STreehugger Robot+ (id) newException
193*16467b97STreehugger Robot{
194*16467b97STreehugger Robot    return [[IllegalArgumentException alloc] init];
195*16467b97STreehugger Robot}
196*16467b97STreehugger Robot
197*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
198*16467b97STreehugger Robot{
199*16467b97STreehugger Robot    return [[IllegalArgumentException alloc] init:aReason];
200*16467b97STreehugger Robot}
201*16467b97STreehugger Robot
202*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
203*16467b97STreehugger Robot{
204*16467b97STreehugger Robot    return [[IllegalArgumentException alloc] init:aReason userInfo:aUserInfo];
205*16467b97STreehugger Robot}
206*16467b97STreehugger Robot
207*16467b97STreehugger Robot- (id) init
208*16467b97STreehugger Robot{
209*16467b97STreehugger Robot    self = [super initWithName:@"IllegalArgumentException" reason:@"IllegalStateException" userInfo:nil];
210*16467b97STreehugger Robot    return(self);
211*16467b97STreehugger Robot}
212*16467b97STreehugger Robot
213*16467b97STreehugger Robot- (id) init:(NSString *)aReason
214*16467b97STreehugger Robot{
215*16467b97STreehugger Robot    self = [super initWithName:@"IllegalArgumentException" reason:(NSString *)aReason userInfo:nil];
216*16467b97STreehugger Robot    return(self);
217*16467b97STreehugger Robot}
218*16467b97STreehugger Robot
219*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
220*16467b97STreehugger Robot{
221*16467b97STreehugger Robot    self = [super initWithName:@"IllegalArgumentException" reason:aReason userInfo:aUserInfo];
222*16467b97STreehugger Robot    return(self);
223*16467b97STreehugger Robot}
224*16467b97STreehugger Robot
225*16467b97STreehugger Robot@end
226*16467b97STreehugger Robot
227*16467b97STreehugger Robot@implementation IllegalStateException
228*16467b97STreehugger Robot
229*16467b97STreehugger Robot+ (id) newException
230*16467b97STreehugger Robot{
231*16467b97STreehugger Robot    return [[IllegalStateException alloc] init];
232*16467b97STreehugger Robot}
233*16467b97STreehugger Robot
234*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
235*16467b97STreehugger Robot{
236*16467b97STreehugger Robot    return [[IllegalStateException alloc] init:aReason];
237*16467b97STreehugger Robot}
238*16467b97STreehugger Robot
239*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
240*16467b97STreehugger Robot{
241*16467b97STreehugger Robot    return [[IllegalStateException alloc] init:aReason userInfo:aUserInfo];
242*16467b97STreehugger Robot}
243*16467b97STreehugger Robot
244*16467b97STreehugger Robot- (id) init
245*16467b97STreehugger Robot{
246*16467b97STreehugger Robot    self = [super initWithName:@"IllegalStateException" reason:@"IllegalStateException" userInfo:nil];
247*16467b97STreehugger Robot    return(self);
248*16467b97STreehugger Robot}
249*16467b97STreehugger Robot
250*16467b97STreehugger Robot- (id) init:(NSString *)aReason
251*16467b97STreehugger Robot{
252*16467b97STreehugger Robot    self = [super initWithName:@"IllegalStateException" reason:(NSString *)aReason userInfo:nil];
253*16467b97STreehugger Robot    return(self);
254*16467b97STreehugger Robot}
255*16467b97STreehugger Robot
256*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
257*16467b97STreehugger Robot{
258*16467b97STreehugger Robot    self = [super initWithName:@"IllegalStateException" reason:aReason userInfo:aUserInfo];
259*16467b97STreehugger Robot    return(self);
260*16467b97STreehugger Robot}
261*16467b97STreehugger Robot
262*16467b97STreehugger Robot@end
263*16467b97STreehugger Robot
264*16467b97STreehugger Robot@implementation IndexOutOfBoundsException
265*16467b97STreehugger Robot
266*16467b97STreehugger Robot+ (id) newException
267*16467b97STreehugger Robot{
268*16467b97STreehugger Robot    return [[IndexOutOfBoundsException alloc] init];
269*16467b97STreehugger Robot}
270*16467b97STreehugger Robot
271*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
272*16467b97STreehugger Robot{
273*16467b97STreehugger Robot    return [[IndexOutOfBoundsException alloc] init:aReason];
274*16467b97STreehugger Robot}
275*16467b97STreehugger Robot
276*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
277*16467b97STreehugger Robot{
278*16467b97STreehugger Robot    return [[IndexOutOfBoundsException alloc] init:aReason userInfo:aUserInfo];
279*16467b97STreehugger Robot}
280*16467b97STreehugger Robot
281*16467b97STreehugger Robot- (id) init
282*16467b97STreehugger Robot{
283*16467b97STreehugger Robot    self = [super initWithName:@"IndexOutOfBoundsException" reason:@"IndexOutOfBoundsException" userInfo:nil];
284*16467b97STreehugger Robot    return(self);
285*16467b97STreehugger Robot}
286*16467b97STreehugger Robot
287*16467b97STreehugger Robot- (id) init:(NSString *)aReason
288*16467b97STreehugger Robot{
289*16467b97STreehugger Robot    self = [super initWithName:@"IndexOutOfBoundsException" reason:(NSString *)aReason userInfo:nil];
290*16467b97STreehugger Robot    return(self);
291*16467b97STreehugger Robot}
292*16467b97STreehugger Robot
293*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
294*16467b97STreehugger Robot{
295*16467b97STreehugger Robot    self = [super initWithName:@"IndexOutOfBoundsException" reason:aReason userInfo:aUserInfo];
296*16467b97STreehugger Robot    return(self);
297*16467b97STreehugger Robot}
298*16467b97STreehugger Robot
299*16467b97STreehugger Robot@end
300*16467b97STreehugger Robot
301*16467b97STreehugger Robot@implementation NoSuchElementException
302*16467b97STreehugger Robot
303*16467b97STreehugger Robot+ (id) newException
304*16467b97STreehugger Robot{
305*16467b97STreehugger Robot    return [[NoSuchElementException alloc] init];
306*16467b97STreehugger Robot}
307*16467b97STreehugger Robot
308*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
309*16467b97STreehugger Robot{
310*16467b97STreehugger Robot    return [[NoSuchElementException alloc] init:aReason];
311*16467b97STreehugger Robot}
312*16467b97STreehugger Robot
313*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
314*16467b97STreehugger Robot{
315*16467b97STreehugger Robot    return [[NoSuchElementException alloc] init:aReason userInfo:(NSDictionary *)aUserInfo];
316*16467b97STreehugger Robot}
317*16467b97STreehugger Robot
318*16467b97STreehugger Robot- (id) init
319*16467b97STreehugger Robot{
320*16467b97STreehugger Robot    self = [super initWithName:@"NoSuchElementException" reason:@"UnknownException" userInfo:nil];
321*16467b97STreehugger Robot    return(self);
322*16467b97STreehugger Robot}
323*16467b97STreehugger Robot
324*16467b97STreehugger Robot- (id) init:(NSString *)aReason
325*16467b97STreehugger Robot{
326*16467b97STreehugger Robot    self = [super initWithName:@"NoSuchElementException" reason:(NSString *)aReason userInfo:(NSDictionary *)nil];
327*16467b97STreehugger Robot    return(self);
328*16467b97STreehugger Robot}
329*16467b97STreehugger Robot
330*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
331*16467b97STreehugger Robot{
332*16467b97STreehugger Robot    self = [super initWithName:@"NoSuchElementException" reason:aReason userInfo:aUserInfo];
333*16467b97STreehugger Robot    return(self);
334*16467b97STreehugger Robot}
335*16467b97STreehugger Robot
336*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
337*16467b97STreehugger Robot{
338*16467b97STreehugger Robot    self = [super initWithName:aName reason:aReason userInfo:aUserInfo];
339*16467b97STreehugger Robot    return(self);
340*16467b97STreehugger Robot}
341*16467b97STreehugger Robot
342*16467b97STreehugger Robot@end
343*16467b97STreehugger Robot
344*16467b97STreehugger Robot@implementation NullPointerException
345*16467b97STreehugger Robot
346*16467b97STreehugger Robot+ (id) newException
347*16467b97STreehugger Robot{
348*16467b97STreehugger Robot    return [[NullPointerException alloc] init];
349*16467b97STreehugger Robot}
350*16467b97STreehugger Robot
351*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
352*16467b97STreehugger Robot{
353*16467b97STreehugger Robot    return [[NullPointerException alloc] init:aReason];
354*16467b97STreehugger Robot}
355*16467b97STreehugger Robot
356*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
357*16467b97STreehugger Robot{
358*16467b97STreehugger Robot    return [[NullPointerException alloc] init:aReason userInfo:(NSDictionary *)aUserInfo];
359*16467b97STreehugger Robot}
360*16467b97STreehugger Robot
361*16467b97STreehugger Robot- (id) init
362*16467b97STreehugger Robot{
363*16467b97STreehugger Robot    self = [super initWithName:@"NullPointerException" reason:@"UnknownException" userInfo:nil];
364*16467b97STreehugger Robot    return(self);
365*16467b97STreehugger Robot}
366*16467b97STreehugger Robot
367*16467b97STreehugger Robot- (id) init:(NSString *)aReason
368*16467b97STreehugger Robot{
369*16467b97STreehugger Robot    self = [super initWithName:@"NullPointerException" reason:(NSString *)aReason userInfo:(NSDictionary *)nil];
370*16467b97STreehugger Robot    return(self);
371*16467b97STreehugger Robot}
372*16467b97STreehugger Robot
373*16467b97STreehugger Robot- (id) init:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
374*16467b97STreehugger Robot{
375*16467b97STreehugger Robot    self = [super initWithName:@"NullPointerException" reason:aReason userInfo:aUserInfo];
376*16467b97STreehugger Robot    return(self);
377*16467b97STreehugger Robot}
378*16467b97STreehugger Robot
379*16467b97STreehugger Robot@end
380*16467b97STreehugger Robot
381*16467b97STreehugger Robot@implementation RewriteEarlyExitException
382*16467b97STreehugger Robot
383*16467b97STreehugger Robot+ (id) newException
384*16467b97STreehugger Robot{
385*16467b97STreehugger Robot	return [[self alloc] init];
386*16467b97STreehugger Robot}
387*16467b97STreehugger Robot
388*16467b97STreehugger Robot- (id) init
389*16467b97STreehugger Robot{
390*16467b97STreehugger Robot	self = [super initWithName:@"RewriteEarlyExitException" reason:nil userInfo:nil];
391*16467b97STreehugger Robot	return self;
392*16467b97STreehugger Robot}
393*16467b97STreehugger Robot
394*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)aUserInfo
395*16467b97STreehugger Robot{
396*16467b97STreehugger Robot    self = [super initWithName:aName reason:aReason userInfo:aUserInfo];
397*16467b97STreehugger Robot    return(self);
398*16467b97STreehugger Robot}
399*16467b97STreehugger Robot
400*16467b97STreehugger Robot- (NSString *) description
401*16467b97STreehugger Robot{
402*16467b97STreehugger Robot	return [self name];
403*16467b97STreehugger Robot}
404*16467b97STreehugger Robot
405*16467b97STreehugger Robot@end
406*16467b97STreehugger Robot
407*16467b97STreehugger Robot@implementation UnsupportedOperationException
408*16467b97STreehugger Robot
409*16467b97STreehugger Robot+ (id) newException:(NSString *)aReason
410*16467b97STreehugger Robot{
411*16467b97STreehugger Robot    return [[RuntimeException alloc] initWithName:@"Unsupported Operation Exception" reason:aReason userInfo:nil];
412*16467b97STreehugger Robot}
413*16467b97STreehugger Robot
414*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason
415*16467b97STreehugger Robot{
416*16467b97STreehugger Robot    self=[super initWithName:aName reason:aReason userInfo:nil];
417*16467b97STreehugger Robot    return self;
418*16467b97STreehugger Robot}
419*16467b97STreehugger Robot
420*16467b97STreehugger Robot- (id) initWithName:(NSString *)aName reason:(NSString *)aReason userInfo:(NSDictionary *)userInfo
421*16467b97STreehugger Robot{
422*16467b97STreehugger Robot    self=[super initWithName:aName reason:aReason userInfo:userInfo];
423*16467b97STreehugger Robot    return self;
424*16467b97STreehugger Robot}
425*16467b97STreehugger Robot
426*16467b97STreehugger Robot@end
427*16467b97STreehugger Robot
428