A lo que Lepe hace referencia es que te fijes en código (o en la ayuda) que excepciones tiene controladas el/los componente/s que usas para acceder a tu base de datos.
Si deseas detectar varios tipos de excepciones debes declarar en el listado de except cada tipo de excepción:
Código Delphi
[-]
on E: Tipo_excepcion_1
....
on E: Tipo_excepcion_n
...
end;
Según veo estas usando IBQuery... eso me dice que estas empleando los componentes IBX o de la paleta Interbase (para mayor referecia) Por lo que deberás fijarte en el código fuente que excepciones están contempladas para estos.
A simple búsqueda: yo veo:
Código Delphi
[-]
EIBInterBaseError = class(EIBError);
EIBInterBaseRoleError = class(EIBError);
EIBClientError = class(EIBError);
TIBDataBaseErrorMessage = (ShowSQLCode,
ShowIBMessage,
ShowSQLMessage);
TIBDataBaseErrorMessages = set of TIBDataBaseErrorMessage;
TIBClientError = (
ibxeUnknownError,
ibxeInterBaseMissing,
ibxeInterBaseInstallMissing,
ibxeIB60feature,
ibxeNotSupported,
ibxeNotPermitted,
ibxeFileAccessError,
ibxeConnectionTimeout,
ibxeCannotSetDatabase,
ibxeCannotSetTransaction,
ibxeOperationCancelled,
ibxeDPBConstantNotSupported,
ibxeDPBConstantUnknown,
ibxeTPBConstantNotSupported,
ibxeTPBConstantUnknown,
ibxeDatabaseClosed,
ibxeDatabaseOpen,
ibxeDatabaseNameMissing,
ibxeNotInTransaction,
ibxeInTransaction,
ibxeTimeoutNegative,
ibxeNoDatabasesInTransaction,
ibxeUpdateWrongDB,
ibxeUpdateWrongTR,
ibxeDatabaseNotAssigned,
ibxeTransactionNotAssigned,
ibxeXSQLDAIndexOutOfRange,
ibxeXSQLDANameDoesNotExist,
ibxeEOF,
ibxeBOF,
ibxeInvalidStatementHandle,
ibxeSQLOpen,
ibxeSQLClosed,
ibxeDatasetOpen,
ibxeDatasetClosed,
ibxeUnknownSQLDataType,
ibxeInvalidColumnIndex,
ibxeInvalidParamColumnIndex,
ibxeInvalidDataConversion,
ibxeColumnIsNotNullable,
ibxeBlobCannotBeRead,
ibxeBlobCannotBeWritten,
ibxeEmptyQuery,
ibxeCannotOpenNonSQLSelect,
ibxeNoFieldAccess,
ibxeFieldReadOnly,
ibxeFieldNotFound,
ibxeNotEditing,
ibxeCannotInsert,
ibxeCannotPost,
ibxeCannotUpdate,
ibxeCannotDelete,
ibxeCannotRefresh,
ibxeBufferNotSet,
ibxeCircularReference,
ibxeSQLParseError,
ibxeUserAbort,
ibxeDataSetUniDirectional,
ibxeCannotCreateSharedResource,
ibxeWindowsAPIError,
ibxeColumnListsDontMatch,
ibxeColumnTypesDontMatch,
ibxeCantEndSharedTransaction,
ibxeFieldUnsupportedType,
ibxeCircularDataLink,
ibxeEmptySQLStatement,
ibxeIsASelectStatement,
ibxeRequiredParamNotSet,
ibxeNoStoredProcName,
ibxeIsAExecuteProcedure,
ibxeUpdateFailed,
ibxeNotCachedUpdates,
ibxeNotLiveRequest,
ibxeNoProvider,
ibxeNoRecordsAffected,
ibxeNoTableName,
ibxeCannotCreatePrimaryIndex,
ibxeCannotDropSystemIndex,
ibxeTableNameMismatch,
ibxeIndexFieldMissing,
ibxeInvalidCancellation,
ibxeInvalidEvent,
ibxeMaximumEvents,
ibxeNoEventsRegistered,
ibxeInvalidQueueing,
ibxeInvalidRegistration,
ibxeInvalidBatchMove,
ibxeSQLDialectInvalid,
ibxeSPBConstantNotSupported,
ibxeSPBConstantUnknown,
ibxeServiceActive,
ibxeServiceInActive,
ibxeServerNameMissing,
ibxeQueryParamsError,
ibxeStartParamsError,
ibxeOutputParsingError,
ibxeUseSpecificProcedures,
ibxeSQLMonitorAlreadyPresent,
ibxeCantPrintValue,
ibxeEOFReached,
ibxeEOFInComment,
ibxeEOFInString,
ibxeParamNameExpected,
ibxeSuccess,
ibxeDelphiException,
ibxeNoOptionsSet,
ibxeNoDestinationDirectory,
ibxeNosourceDirectory,
ibxeNoUninstallFile,
ibxeOptionNeedsClient,
ibxeOptionNeedsServer,
ibxeInvalidOption,
ibxeInvalidOnErrorResult,
ibxeInvalidOnStatusResult,
ibxeDPBConstantUnknownEx,
ibxeTPBConstantUnknownEx,
ibxeUnknownPlan,
ibxeFieldSizeMismatch,
ibxeEventAlreadyRegistered,
ibxeStringTooLarge
);
Saludos,