restemplate/indy/System/IdException.pas

118 lines
3.7 KiB
Plaintext

{
$Project$
$Workfile$
$Revision$
$DateUTC$
$Id$
This file is part of the Indy (Internet Direct) project, and is offered
under the dual-licensing agreement described on the Indy website.
(http://www.indyproject.org/)
Copyright:
(c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
}
{
$Log$
}
{
Rev 1.5 09/06/2004 09:52:52 CCostelloe
Kylix 3 patch
Rev 1.4 2004.04.18 4:38:24 PM czhower
EIdExceptionBase created
Rev 1.3 2004.03.07 11:45:22 AM czhower
Flushbuffer fix + other minor ones found
Rev 1.2 2/10/2004 7:33:24 PM JPMugaas
I had to move the wrapper exception here for DotNET stack because Borland's
update 1 does not permit unlisted units from being put into a package. That
now would report an error and I didn't want to move IdExceptionCore into the
System package.
Rev 1.1 2004.02.03 3:15:52 PM czhower
Updates to move to System.
Rev 1.0 2004.02.03 2:36:00 PM czhower
Move
}
unit IdException;
interface
{$I IdCompilerDefines.inc}
uses
SysUtils;
type
// EIdExceptionBase is the base class which extends Exception. It is separate from EIdException
// to allow other users of Indy to use EIdExceptionBase while still being able to separate from
// EIdException.
EIdException = class(Exception)
public
{
The constructor must be virtual for Delphi NET if you want to call it with class methods.
Otherwise, it will not compile in that IDE. Also it's overloaded so that it doesn't close
the other methods declared by the DotNet exception (particularly InnerException constructors)
}
constructor Create(const AMsg: string); overload; virtual;
class procedure Toss(const AMsg: string); {$IFDEF HAS_DEPRECATED}deprecated{$IFDEF HAS_DEPRECATED_MSG} 'Use raise instead'{$ENDIF};{$ENDIF}
end;
TClassIdException = class of EIdException;
// You can add EIdSilentException to the list of ignored exceptions to reduce debugger "trapping"
// of "normal" exceptions
EIdSilentException = class(EIdException);
// EIdConnClosedGracefully is raised when remote side closes connection normally
EIdConnClosedGracefully = class(EIdSilentException);
{$IFDEF DOTNET}
// This class used in DotNet. Under windows/linux, all errors that come out the
// indy layer descend from IdException (actually not all errors in theory, but
// certainly all errors in practice)
// With DotNet, the socket library itself may raise various exceptions. If the
// exception is a socket exception, then Indy will map this to an EIdSocketError.
// Otherwise Indy will raise an EIdWrapperException. In this case, the original
// exception will be available using the InnerException member
EIdWrapperException = class (EIdException);
{$ENDIF}
//used for index out of range
{CH EIdRangeException = class(EIdException); }
// Other shared exceptions
EIdSocketHandleError = class(EIdException);
{$IFDEF UNIX}
EIdNonBlockingNotSupported = class(EIdException);
{$ENDIF}
EIdPackageSizeTooBig = class(EIdSocketHandleError);
EIdNotAllBytesSent = class (EIdSocketHandleError);
EIdCouldNotBindSocket = class (EIdSocketHandleError);
EIdCanNotBindPortInRange = class (EIdSocketHandleError);
EIdInvalidPortRange = class(EIdSocketHandleError);
EIdCannotSetIPVersionWhenConnected = class(EIdSocketHandleError);
{CH EIdInvalidIPAddress = class(EIdSocketHandleError); }
implementation
{ EIdException }
constructor EIdException.Create(const AMsg : String);
begin
inherited Create(AMsg);
end;
{$I IdDeprecatedImplBugOff.inc}
class procedure EIdException.Toss(const AMsg: string);
{$I IdDeprecatedImplBugOn.inc}
begin
raise Create(AMsg);
end;
end.