From 6c5e0d54bb9f1be6cde74a68f043474fe4779c05 Mon Sep 17 00:00:00 2001 From: mccallum Date: Tue, 26 Mar 1996 19:35:47 +0000 Subject: [PATCH] Use NSException instead of sending -error: in all methods. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1273 72102866-910b-0410-8b05-ffd578937521 --- Source/Decoder.m | 49 +++++++++++++++++++++++++------------- Source/Encoder.m | 10 ++++---- Source/NSAutoreleasePool.m | 19 +++++++++------ Source/NSObject.m | 46 ++++++++++++++++++++++++----------- Source/NSString.m | 4 +++- Source/Proxy.m | 7 ++++-- 6 files changed, 91 insertions(+), 44 deletions(-) diff --git a/Source/Decoder.m b/Source/Decoder.m index b0e579e93..56b028548 100644 --- a/Source/Decoder.m +++ b/Source/Decoder.m @@ -341,8 +341,10 @@ withName: NULL]; ret = (id) [self _coderConstPtrAtReference: xref]; if (!ret) - [self error:"repeated class cross-reference number %u not found", - xref]; + [NSException + raise: NSGenericException + format: @"repeated class cross-reference number %u not found", + xref]; break; } case CODER_CLASS: @@ -359,10 +361,13 @@ ret = objc_lookup_class (class_name); if (ret == Nil) - [self error:"Couldn't find class `%s'", class_name]; + [NSException raise: NSGenericException + format: @"Couldn't find class `%s'", class_name]; if (class_get_version(ret) != class_version) - [self error:"Class version mismatch, executable %d != encoded %d", - class_get_version(ret), class_version]; + [NSException + raise: NSGenericException + format: @"Class version mismatch, executable %d != encoded %d", + class_get_version(ret), class_version]; { unsigned xref; @@ -374,7 +379,8 @@ break; } default: - [self error:"unrecognized class tag = %d", (int)tag]; + [NSException raise: NSGenericException + format: @"unrecognized class tag = %d", (int)tag]; } [self decodeUnindent]; return ret; @@ -409,7 +415,9 @@ withName: NULL]; ret = (SEL) [self _coderConstPtrAtReference: xref]; if (!ret) - [self error:"repeated selector cross-reference number %u not found", + [NSException + raise: NSGenericException + format: @"repeated selector cross-reference number %u not found", xref]; break; } @@ -433,12 +441,15 @@ ret = sel_get_typed_uid(sel_name, sel_types); #endif if (!ret) - [self error:"Could not find selector (%s) with types [%s]", - sel_name, sel_types]; + [NSException raise: NSGenericException + format: @"Could not find selector (%s) with types [%s]", + sel_name, sel_types]; #if ! NeXT_runtime if (strcmp(sel_types, NO_SEL_TYPES) && !(sel_types_match(sel_types, ret->sel_types))) - [self error:"ObjC runtime didn't provide SEL with matching type"]; + [NSException + raise: NSGenericException + format: @"ObjC runtime didn't provide SEL with matching type"]; #endif { unsigned xref; @@ -451,7 +462,8 @@ break; } default: - [self error:"unrecognized selector tag = %d", (int)tag]; + [NSException raise: NSGenericException + format: @"unrecognized selector tag = %d", (int)tag]; } [self decodeUnindent]; return ret; @@ -563,8 +575,10 @@ unsigned fref; if (!DOING_ROOT_OBJECT) - [self error:"can't decode forward reference when not decoding " - "a root object"]; + [NSException + raise: NSGenericException + format: @"can't decode forward reference when not decoding " + "a root object"]; [self decodeValueOfCType: @encode(unsigned) at: &fref withName: NULL]; @@ -637,12 +651,15 @@ withName: NULL]; *anObjPtr = [self _coderObjectAtReference: xref]; if (!*anObjPtr) - [self error: "repeated object cross-reference number %u not found", - xref]; + [NSException + raise: NSGenericException + format: @ "repeated object cross-reference number %u not found", + xref]; break; } default: - [self error:"unrecognized object tag = %d", (int)tag]; + [NSException raise: NSGenericException + format: @"unrecognized object tag = %d", (int)tag]; } [self decodeUnindent]; } diff --git a/Source/Encoder.m b/Source/Encoder.m index a2218794e..dade4872a 100644 --- a/Source/Encoder.m +++ b/Source/Encoder.m @@ -454,10 +454,12 @@ my_object_is_class(id object) sel_types = sel_get_type (sel_get_any_typed_uid (sel_get_name (sel))); #endif - if (!sel_name) [self error:"ObjC runtime didn't provide SEL name"]; - if (!*sel_name) [self error:"ObjC runtime didn't provide SEL name"]; - if (!sel_types) [self error:"ObjC runtime didn't provide SEL type"]; - if (!*sel_types) [self error:"ObjC runtime didn't provide SEL type"]; + if (!sel_name || !*sel_name) + [NSException raise: NSGenericException + format: @"ObjC runtime didn't provide SEL name"]; + if (!sel_types || !*sel_types) + [NSException raise: NSGenericException + format: @"ObjC runtime didn't provide SEL type"]; [self _coderCreateReferenceForConstPtr: sel]; [self encodeValueOfCType: @encode(char*) diff --git a/Source/NSAutoreleasePool.m b/Source/NSAutoreleasePool.m index 6efd4bd5a..869d9ae13 100644 --- a/Source/NSAutoreleasePool.m +++ b/Source/NSAutoreleasePool.m @@ -41,9 +41,7 @@ static NSAutoreleasePool *current_pool = nil; `release' message. Memory use grows, and grows, and... */ static BOOL autorelease_enabled = YES; -/* When the released_count gets over this value, we call error:. - In the future, I may change this to raise an exception or call - a function instead. */ +/* When the released_count gets over this value, we raise an exception. */ static unsigned pool_count_warning_threshhold = UINT_MAX; #define DEFAULT_SIZE 64 @@ -103,7 +101,8 @@ static unsigned pool_count_warning_threshhold = UINT_MAX; return; if (released_count >= pool_count_warning_threshhold) - [self error:"AutoreleasePool count threshhold exceeded."]; + [NSException raise: NSGenericException +format: @"AutoreleasePool count threshhold exceeded."]; if (released_count == released_size) { @@ -126,7 +125,8 @@ static unsigned pool_count_warning_threshhold = UINT_MAX; - (id) retain { - [self error:"Don't call `-retain' on a NSAutoreleasePool"]; + [NSException raise: NSGenericException +format: @"Don't call `-retain' on a NSAutoreleasePool"]; return self; } @@ -148,7 +148,11 @@ static unsigned pool_count_warning_threshhold = UINT_MAX; { id anObject = released[i]; if (object_get_class(anObject) == (void*) 0xdeadface) - [self error:"Autoreleasing deallocated object. Debug after setting [NSObject enableDoubleReleaseCheck:YES] to check for release errors."]; + [NSException + raise: NSGenericException + format: @"Autoreleasing deallocated object.\n" + @"Suggest you debug after setting [NSObject " + @"enableDoubleReleaseCheck:YES]\nto check for release errors."]; released[i]=0; [anObject release]; } @@ -159,7 +163,8 @@ static unsigned pool_count_warning_threshhold = UINT_MAX; - autorelease { - [self error:"Don't call `-autorelease' on a NSAutoreleasePool"]; + [NSException raise: NSGenericException + format: @"Don't call `-autorelease' on a NSAutoreleasePool"]; return self; } diff --git a/Source/NSObject.m b/Source/NSObject.m index 7841189cb..ee750b994 100644 --- a/Source/NSObject.m +++ b/Source/NSObject.m @@ -148,7 +148,8 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) - free { - [self error:"Use `dealloc' instead of `free'."]; + [NSException raise: NSGenericException + format: @"Use `dealloc' instead of `free'."]; return nil; } @@ -244,8 +245,9 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) - (void) doesNotRecognizeSelector: (SEL)aSelector { - [self error:"%s does not recognize %s", - object_get_class_name(self), sel_get_name(aSelector)]; + [NSException raise: NSGenericException + format: @"%s does not recognize %s", + object_get_class_name(self), sel_get_name(aSelector)]; } - (retval_t) forward:(SEL)aSel :(arglist_t)argFrame @@ -299,7 +301,9 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) unsigned retain_count = [self retainCount]; release_count = [autorelease_class autoreleaseCountForObject:self]; if (release_count > retain_count) - [self error:"Autorelease would release object too many times.\n" + [NSException + raise: NSGenericException + format: @"Autorelease would release object too many times.\n" "%d release(s) versus %d retain(s)", release_count, retain_count]; } @@ -351,7 +355,9 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) { IMP msg = objc_msg_lookup(self, aSelector); if (!msg) - return [self error:"invalid selector passed to %s", sel_get_name(_cmd)]; + return [NSException + raise: NSGenericException + format: @"invalid selector passed to %s", sel_get_name(_cmd)]; return (*msg)(self, aSelector); } @@ -359,7 +365,9 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) { IMP msg = objc_msg_lookup(self, aSelector); if (!msg) - return [self error:"invalid selector passed to %s", sel_get_name(_cmd)]; + return [NSException + raise: NSGenericException + format: @"invalid selector passed to %s", sel_get_name(_cmd)]; return (*msg)(self, aSelector, anObject); } @@ -367,7 +375,9 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) { IMP msg = objc_msg_lookup(self, aSelector); if (!msg) - return [self error:"invalid selector passed to %s", sel_get_name(_cmd)]; + return [NSException + raise: NSGenericException + format: @"invalid selector passed to %s", sel_get_name(_cmd)]; return (*msg)(self, aSelector, object1, object2); } @@ -379,7 +389,8 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) unsigned retain_count = [self retainCount]; release_count = [autorelease_class autoreleaseCountForObject:self]; if (release_count > retain_count) - [self error:"Release would release object too many times."]; + [NSException raise: NSGenericException + format: @"Release would release object too many times."]; } if (NSDecrementExtraRefCountWasZero(self)) @@ -534,13 +545,16 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) - notImplemented:(SEL)aSel { - return [self error:"method %s not implemented", sel_get_name(aSel)]; + return [NSException + raise: NSGenericException + format: @"method %s not implemented", sel_get_name(aSel)]; } - doesNotRecognize:(SEL)aSel { - return [self error:"%s does not recognize %s", - object_get_class_name(self), sel_get_name(aSel)]; + return [NSException raise: NSGenericException + format: @"%s does not recognize %s", + object_get_class_name(self), sel_get_name(aSel)]; } - perform: (SEL)sel with: anObject @@ -637,13 +651,17 @@ BOOL NSDecrementExtraRefCountWasZero (id anObject) - subclassResponsibility:(SEL)aSel { - return [self error:"subclass should override %s", sel_get_name(aSel)]; + return [NSException + raise: NSGenericException + format: @"subclass should override %s", sel_get_name(aSel)]; } - shouldNotImplement:(SEL)aSel { - return [self error:"%s should not implement %s", - object_get_class_name(self), sel_get_name(aSel)]; + return [NSException + raise: NSGenericException + format: @"%s should not implement %s", + object_get_class_name(self), sel_get_name(aSel)]; } + (int)streamVersion: (TypedStream*)aStream diff --git a/Source/NSString.m b/Source/NSString.m index 95c3013ac..1e1e22ecc 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -133,7 +134,8 @@ handle_printf_atsign (FILE *stream, if (register_printf_function ('@', (printf_function)handle_printf_atsign, NULL)) - [self error: "register printf handling of %%@ failed"]; + [NSException raise: NSGenericException + format: @"register printf handling of %%@ failed"]; #endif /* HAVE_REGISTER_PRINTF_FUNCTION */ } } diff --git a/Source/Proxy.m b/Source/Proxy.m index 320cf9f34..726801fcb 100644 --- a/Source/Proxy.m +++ b/Source/Proxy.m @@ -97,7 +97,8 @@ static id tmp_kludge_protocol = nil; - notImplemented: (SEL)aSel { - [Object error:"Proxy notImplemented %s", sel_get_name(aSel)]; + [NSException raise: NSGenericException + format: @"Proxy notImplemented %s", sel_get_name(aSel)]; return self; } @@ -349,7 +350,9 @@ enum connection: proxy_connection]; } default: - [self error: "Bad proxy tag"]; + /* xxx This should be something different than NSGenericException. */ + [NSException raise: NSGenericException + format: @"Bad proxy tag"]; } /* Not reached. */ return nil;