Exceptions
In programming exceptions are conditions of the program that require special processing. Handling exceptions is important, because to the user the program should function as if it were in a normal state whereby any exceptions that are encountered are handled in the background. See also Exception_handling.
This page lists the most common exceptions in Trac core and database communication.
Custom Trac Exceptions
Trac defines a set of custom exception types:
- Exception
TracBaseError(trac.core): Exception base class for errors in Trac. (since 1.1.2)TracError(trac.core): Standard Exception for errors in Trac.AdminCommandError(trac.admin.api): Exception raised when an admin command cannot be executed.ConfigurationError(trac.config): Exception raised when a value in the configuration file is not valid.InvalidAttachment(trac.attachment): Exception raised when attachment validation fails (Deprecated since 1.3.2, removed in 1.5.1).InvalidRepository(trac.versioncontrol.api): Exception raised when initializing a repository fails.InvalidTicket(trac.ticket.web_ui): Exception raised when a ticket fails validation (Deprecated since 1.3.2, removed in 1.5.1).InvalidWikiPage(trac.wiki.web_ui): Exception raised when a Wiki page fails validation (Deprecated since Trac 0.11 and removed in Trac 1.1.2).MacroError(trac.wiki.formatter) Exception raised in macro when an argument is invalid (Since Trac 1.0.11).ProcessorError(trac.wiki.formatter)QuerySyntaxError(trac.ticket.query): Exception raised when a ticket query cannot be parsed from a string.QueryValueError(trac.ticket.query): Exception raised when a ticket query has bad constraint values.ResourceExistsError(trac.resource): Thrown when attempting to insert an existing resourceResourceNotFound(trac.resource): Thrown when a non-existent resource is requestedTimeoutError(trac.db.pool): Exception raised by the connection pool when no connection has become available after a given timeout (Prior to 1.0.2dev-r12305, inherited directly fromException).TracNotImplementedError(trac.web.api) Exception raised when aNotImplementedErroris trapped. This exception is for internal use only and should not be raised by plugins. Plugin should useNotImplementedError. (Since 1.0.11)TracValueError(trac.core) Exception raised when a function or operator receives an argument that is the correct type, but inappropriate value. (Since 1.2.1)
HTTPException(trac.web.api): Representing a HTTP status codeHTTPBadRequest(trac.web.api): 400 Bad RequestHTTPUnauthorized(trac.web.api): 401 UnauthorizedHTTPPaymentRequired(trac.web.api): 402 Payment RequiredHTTPForbidden(trac.web.api): 403 ForbiddenHTTPNotFound(trac.web.api): 404 Not FoundHTTPMethodNotAllowed(trac.web.api): 405 Method Not AllowedHTTPNotAcceptable(trac.web.api): 406 Not AcceptableHTTPProxyAuthenticationRequired(trac.web.api): 407 Proxy Authentication RequiredHTTPRequestTimeout(trac.web.api): 408 Request TimeoutHTTPConflict(trac.web.api): 409 ConflictHTTPGone(trac.web.api): 410 GoneHTTPLengthRequired(trac.web.api): 411 Length RequiredHTTPPreconditionFailed(trac.web.api): 412 Precondition FailedHTTPRequestEntityTooLarge(trac.web.api): 413 Request Entity Too LargeHTTPRequestUriTooLong(trac.web.api): 414 Request-Uri Too LongHTTPUnsupportedMediaType(trac.web.api): 415 Unsupported Media TypeHTTPRequestedRangeNotSatisfiable(trac.web.api): 416 Requested Range Not SatisfiableHTTPExpectationFailed(trac.web.api): 417 Expectation FailedHTTPInternalError(trac.web.api): 500 Internal Server Error (removed in 1.3.1)HTTPServerInternalError(trac.web.api): 500 Internal Server Error (since 1.3.1)HTTPNotImplemented(trac.web.api): 501 Not ImplementedHTTPBadGateway(trac.web.api): 502 Bad Gateway- (trac.web.api): 503 Service Unavailable
HTTPGatewayTimeout(trac.web.api): 504 Gateway TimeoutHTTPVersionNotSupported(trac.web.api): 505 Http Version Not Supported
RequestDone(trac.web.api): Marker exception that indicates whether request processing has completed and a response was sent.ParseError(trac.versioncontrol.svn_authz): Exception thrown for parse errors in authz filesGitError(tracopt.versioncontrol.git.PyGIT)GitErrorSha(tracopt.versioncontrol.git.PyGIT)
Error(trac.db.tests.api)
- StandardError (Removed in 1.3.3),
TracBaseError - StandardError
Hierarchy is inconsistent, even after addition of TracBaseError class (#11568). There doesn't seem to be any consistent pattern in inheriting from TracError. Some exceptions also inherit from built-in exception classes other than Exception.
There also seem to be multiple naming conventions. Consider following PEP:0008#exception-names.
But changing the existing hierarchy might be difficult without breaking backward compatibility.
Database Exceptions
We can catch Python DB API exceptions in a database neutral way. (Since Trac 1.0, see #6348.)
try: with env.db_transaction as db: ... except env.db_exc.IntegrityError, e: ...
The above example catches sqlite.IntegrityError, MySQLdb.IntegrityError or psycopg.IntegrityError,
depending on the selected DatabaseBackend.
See tickets


