User Guide

This project provides a Python library for defining Exasol-compliant errors. Additionally, the defined errors can be parsed, allowing you to extract an error catalog from the code.

Error Objects

Error objects are built using the function ExaError. Please keep in mind that an error-code should satisfy the error-code format (see code).

Flexibility is provided by introducing placeholder parameters to the error message.

code

This parameter needs to obey the following format (^[FEW]-[[A-Z][A-Z0-9]+(-[A-Z][A-Z0-9]+)*-[0-9]+$):

severity "-" project-short-tag ["-" module-short-tag] "-" error-number where:

  • severity: either F (Failure, not recoverable), or E (Error, recoverable), or W (warning),

  • project-short-tag: alphanumeric starting with an alphabet.

  • module-short-tag: alphanumeric starting with an alphabet.

  • error-number: only number.

Examples of valid error codes:

  • E-EXA-22004

  • E-EXA-SQL-22004

  • F-VS-QRW-13

message

This parameter includes the error description which can be given by either a static string or a string containing placeholders in double curly brackets. Parameters of placeholders in the error message can be provided using the parameters parameter.

mitigations

This parameter provides a list of hints on how to fix the error. Parameters of placeholders in the mitigations can be given via the parameters parameter.

parameters

This argument takes a dictionary of placeholder names and the respective parameter values. They will be used to replace the placeholders in the mitigations and messages.

Usage

Install the library

pip install exasol-error-reporting

Create a Simple Error

from exasol import error

error1 = error.ExaError(
    "E-TEST-1", "A trivial error", "No mitigation available", {}
)

Specify Multiple Mitigations

from exasol import error

error2 = error.ExaError(
    "E-TEST-2",
    message="Fire in the server room",
    mitigations=[
        "Use the fire extinguisher",
        "Flood the room with halon gas (Attention: make sure no humans are in the room!)"
    ],
    parameters={}
)

Error Parameter(s) without description

from exasol import error

error3 = error.ExaError(
    "E-TEST-2",
    "Not enough space on device {{device}}.",
    "Delete something from {{device}}.",
    {"device": "/dev/sda1"},
)

Error with detailed Parameter(s)

from exasol import error
from exasol.error import Parameter

error4 = error.ExaError(
    "E-TEST-2",
    "Not enough space on device {{device}}.",
    "Delete something from {{device}}.",
    {"device": Parameter("/dev/sda1", "name of the device")},
)

Check out the user guide for more details.

Tooling

The exasol-error-reporting library includes command-line tools to manage and work with error definitions. For further details, see the Tools section of the documentation.