exceptions - standard error classes¶
Use these error types if you want to propagate errors across your apps.
If you want to create your own error class you should inherit it from ClientError
or InternalError depending on what type of exception it is and then you should
register it in ERROR_CLASSES registry so the RPC client will be able to reconstruct
the exception from a json response.
from kaiju_tools.exceptions import ClientError, ERROR_CLASSES
class ClientIsBanned(ClientError):
"""Client account is banned."""
ERROR_CLASSES.register(ClientError)
The difference between ClientError
and InternalError is that the former is not considered an error from the application
perspective, i.e. it will not produce an error log and trace records.
Does not print stack trace
Has ‘INFO’ log level
All error data is sent to the client
May print stack trace
Has ‘ERROR’ log level
Error data is not sent to the client
Choose between these two base depending on your error purpose. If you raise an error to signal a client that something is wrong with the client input (validation, object not found or can’t be accessed, etc) you should use ClientError. For server errors use InternalError.
- ERROR_CLASSES¶
Global registry of error classes, see
ClassRegistry.
- class APIException[source]¶
Bases:
Serializable,ExceptionBase exception.
You should use this class as a base when creating an exception which is meant to propagated across services, since this class is serializable.
- status_code = 500¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)[source]¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class ClientError[source]¶
Bases:
APIExceptionAny kind of error happened because of a client’s actions.
- status_code = 400¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class JSONParseError[source]¶
Bases:
ClientError,ValueErrorWrongly formatted JSON data.
- status_code = -32700¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class InvalidRequest[source]¶
Bases:
JSONRPCErrorInvalid RPC request format.
- status_code = -32600¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class MethodNotFound[source]¶
Bases:
JSONRPCErrorRPC method does not exist or not available for this type of user.
- status_code = -32601¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class InvalidParams[source]¶
Bases:
JSONRPCErrorJSONSchema validation error.
- status_code = -32602¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class RequestTimeout[source]¶
Bases:
ClientErrorRequest reached its timeout.
- status_code = -32002¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class Aborted[source]¶
Bases:
ClientErrorAborted by the server due to timeout or other conditions.
- status_code = -32001¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class InternalError[source]¶
Bases:
APIExceptionAny internal error happened on the server and not caused by a client.
- status_code = -32603¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class HTTPRequestError[source]¶
Bases:
InternalErrorHTTP response error.
- status_code = -32603¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class NotAuthorized[source]¶
Bases:
ClientErrorAuthorization required.
- status_code = -32000¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class NotFound[source]¶
Bases:
ClientErrorRequested object or resource doesn’t exist.
- status_code = 404¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class Conflict[source]¶
Bases:
ClientErrorNew object/data is in conflict with existing.
- status_code = 409¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class FailedDependency[source]¶
Bases:
APIExceptionSomething.
- status_code = 424¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data
- class InvalidLicense[source]¶
Bases:
ClientErrorInvalid license exception.
- status_code = 451¶
RPC error status code.
- __init__(message: str = '', *, id: int | None = None, base_exc: Exception = None, debug: bool = False, data: dict = None, **extras)¶
Initialize.
- Parameters:
message – error messages
id – request id
base_exc – base exception object (when used as a wrapper)
debug – debug mode error
data – additional data
extras – will be merged with data