mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 00:11:26 +00:00
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:
parent
9aa534aee8
commit
6c5e0d54bb
6 changed files with 91 additions and 44 deletions
|
@ -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];
|
||||
}
|
||||
|
|
|
@ -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*)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 */
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue