/*!
@header EncoreExceptions
@abstract Export of diverse exceptions
@availability OS X, GNUstep
@copyright 2004, 2005, 2006 Oliver Langer
Author: Oliver Langer
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-------------------------------------------------------------------------
Modification history
04.01.2005 ola initial version
22.08.2006 ola license changed
-------------------------------------------------------------------------
******************************************************************************/
#if !defined(__ECEXCEPTIONS_H)
#define __ECEXCEPTIONS_H
#include
/*!
* @class ECException
* @abstract abstract base class of all exceptions
*/
@interface ECException : NSException {
/**
* This variable may refer to previously raised exceptions which caused
* the raise of the current instance. Through this mechanism it is
* possible to implement a stacktrace in future.
*/
NSException *cause;
}
/*!
* @method init
* @abstract default constructor
*/
- init;
- (void) dealloc;
/*!
* @method initWithReason
* @abstract Initialization specifyin the reason
*/
- initWithReason: (NSString *) aReason;
/*!
* @method cause
* @abstract returns the exception which caused the raise of the receiver of
* this message
* @result the exception which caused the raise of the receiver of
* this message or nil, if not given
*/
- (NSException *) cause;
/*!
* @method raiseWithPredecessor
* @abstract Raises the exception setting the hand-off exception as the cause
* of this raising.
* @param predecessor Exception which caused the receiver of this message to be
* raised.
*/
- (void) raiseWithPredecessor: (NSException *) predecessor;
/*!
* @method setCause
* @abstract Specify the exception which has previously been thrown and will
* cause the receiver of this message to be raisen
* @discussion Do only call this method once per instance! Otherwise it will
* throw an exception for itself!
* @result
* @throws ECIllegalArgumentException
*/
- setCause: (NSException *) causingException;
@end
/*!
* @class ECIllegalArgumentException
* @abstract Thrown in case of an illegal argument
*/
@interface ECIllegalArgumentException : ECException {
@private
NSString *argumentInfo;
}
/*!
* @method init
* @param argumentInfo gives a hint about the argument
*/
- initWithArgumentInfo: (NSString *) anArgumentInfo;
- (void) dealloc;
/*!
* @method argumentInfo
* @result information about the result. May equal nil
*/
- (NSString *) argumentInfo;
@end
@interface ECPermissionDeniedException : ECException {
@private
NSString *accessObject;
}
/**
* @method initForAccessObject
* @abstract Initializer.
* @param theAccessObject the object for which the permission could not be
* granted.
* @discussion "obejct" is meant in an abstract manner here.
*/
- initForAccessObject: (NSString *) theAccessObject;
- (void) dealloc;
/**
* @method accessObject
* @result the object for which the access could not be granted
* @discussion "obejct" is meant in an abstract manner here.
*/
- (NSString *) accessObject;
@end
/*!
* @class ECIncompleteInitializationException
* @abstract Thrown if an initialization is incomplete
* @discussion
* Use the (derived) method initWithReason and "reason" to manage the reason.
*/
@interface ECIncompleteInitializationException : ECException
@end
/*!
* @class ECIllegalStateException
* @abstract Thrown in case of an illegal state
* @discussion manages a state info string
*/
@interface ECIllegalStateException : ECException {
@private
NSString *stateInfo;
/**
* this reference may equal nil
*/
NSException *caughtException;
}
/*!
* @method initWithIllegalStateInfo
*/
- initWithIllegalStateInfo: (NSString *) aStateInfo;
- initWithIllegalStateInfo: (NSString *) aStateInfo
caughtException: (NSException *) anException;
- (void) dealloc;
/*!
* @method caughtException
* @result return the exception this illegale state is based on.
* The result may equal nil in case the exception has not been given
*/
- (NSException *) caughtException;
/*!
* @method stateInfo
* @result information about the illegal state
*/
- (NSString *) stateInfo;
@end
/*!
* @class ECAlreadyExistsException
* @abstract Thrown if a resource already exists
*/
@interface ECAlreadyExistsException : ECException {
@private
NSString *resourceInformation;
}
/*!
* @method initWithResourceInformation
* @abstract Initializes the instance with the appropriate information about
* the resource
* @param aResourceInfo information about the resource
* @result self
*/
- initWithResourceInformation: (NSString *) aResourceInfo;
- (void) dealloc;
/*!
* @method resourceInformation
* @result information about the resource
*/
- (NSString *) resourceInformation;
@end
/*!
* @class ECIllegalOperationException
* @abstract Thrown if the operation being called is not defined for
* the current state/context.
*/
@interface ECIllegalOperationException : ECException {
@private
NSString *operationInformation;
}
/*!
* @method initWithOperationInformation
* @param operationInfo Information about the operation
* @result self
*/
- initWithOperationInformation: (NSString *) operationInfo;
- (void) dealloc;
/*!
* @method operationInformation
* @result Information about the operation
*/
- (NSString *) operationInformation;
@end
/*!
* @class ECNotImplementedException
* @abstract Thrown if a functionality is referred which has not been
* implemented yet.
*/
@interface ECNotImplementedException : ECException {
@private
NSString *operationInformation;
}
/*!
* @method initWithOperationInformation
* @param anInfo information about the unimplemented feature
* @result self
*/
- initWithOperationInformation: (NSString *) anInfo;
- (void) dealloc;
/*!
* @method operationInformation
* @result Returns information about the unimplemented feature
*/
- (NSString *) operationInformation;
@end
/*!
* @class ECAssertionException
* @abstract Thrown if an assertion does not equal TRUE after evaluation
*/
@interface ECAssertionException : ECException {
@private
NSString *assertionInfo;
}
/*!
* @method initWithAssertionInfo
* @param theInfo Information regarding the assertion failure. May contain
* context info etc.
* @result self
*/
- initWithAssertionInfo: (NSString *) theInfo;
- (void) dealloc;
/*!
* @method assertionInfo
* @result information about the assertion failure
*/
- (NSString *) assertionInfo;
@end
#endif