error.hh File Reference

Overview

The BatchLAS exception hierarchy.

Every failure BatchLAS diagnoses is thrown as one of the classes below. Each derives from the std:: exception the site threw historically (so existing handlers and the pybind11 type mapping are unchanged) and, virtually, from the empty tag batchlas::exception.

Three catches answer three questions: catch (const batchlas::workspace_error&) (a specific reason), catch (const batchlas::exception&) (anything BatchLAS diagnosed), and catch (const std::exception&) (that, plus std::bad_alloc and sycl::exception, which are deliberately not wrapped).

Note
Not yet covered: the kernel-selection layer throws plain std::invalid_argument for a bad BATCHLAS_<OP>_ROUTE pin and std::runtime_error when no kernel can run; neither matches catch (const batchlas::exception&). batchlas::NoRouteError (<batchlas/no_route.hh>, nothing compiled in can serve the call) is a batchlas::unsupported.
See also
Error model

Definition in file error.hh.

#include <stdexcept>
#include <string>
#include <batchlas/export.hh>

Go to the source code of this file.

Classes

class  batchlas::exception
 Empty tag base of every BatchLAS exception. More...
class  batchlas::detail::exception_bridge< StdBase >
 Derives from StdBase and, virtually, from batchlas::exception. More...
class  batchlas::invalid_argument
 The call violates the API contract. More...
class  batchlas::out_of_range
 An index is outside its container. More...
class  batchlas::error
 Base of the runtime arm: the call failed for a reason that is not a bad argument. More...
class  batchlas::unsupported
 No kernel, backend or vendor entry point in this build on this device serves the request. More...
class  batchlas::device_error
 The device or its vendor runtime failed. More...
class  batchlas::workspace_error
 The scratch the operation was handed is too small, or the allocator ran out of it. More...
class  batchlas::convergence_error
 An iterative kernel did not converge, or a factorisation broke down on the data. More...
class  batchlas::internal_error
 BatchLAS is internally inconsistent. More...
class  batchlas::api_misuse
 A well-formed call arrived in a state, order or thread where it is not valid. More...

Namespaces

namespace  batchlas
namespace  batchlas::detail