The exceptions are converted from libchirp error-codes, the attribute ecode contains the original libchirp error-code.
ValueError: Bad values, for example: bad config values
RuntimeError: Unexpected runtime problems, for example: failed initialization of resources, protocol or TLS errors
OSError: Address in use
ConnectionError: Remote connection denied or closed
TimeoutError: Network timeouts
MemoryError: libchirp tries to be robust in low-memory situations. Usually this means the operation has not completed due to low-memory
Exception: libchirp has returned a error that is not mapped in python-chirp. You should file an issue if that happens.