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
This commit is contained in:
mccallum 1996-03-26 19:35:47 +00:00
parent 9aa534aee8
commit 6c5e0d54bb
6 changed files with 91 additions and 44 deletions

View file

@ -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];
}

View file

@ -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*)

View file

@ -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;
}

View file

@ -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

View file

@ -37,6 +37,7 @@
#include <Foundation/NSString.h>
#include <Foundation/NSArray.h>
#include <Foundation/NSCharacterSet.h>
#include <Foundation/NSException.h>
#include <Foundation/NSValue.h>
#include <objects/IndexedCollection.h>
#include <objects/IndexedCollectionPrivate.h>
@ -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 */
}
}

View file

@ -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;