summaryrefslogtreecommitdiff
path: root/src/utilities/clblast_exceptions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/utilities/clblast_exceptions.cpp')
-rw-r--r--src/utilities/clblast_exceptions.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/utilities/clblast_exceptions.cpp b/src/utilities/clblast_exceptions.cpp
index 8038805d..25e5f4be 100644
--- a/src/utilities/clblast_exceptions.cpp
+++ b/src/utilities/clblast_exceptions.cpp
@@ -72,6 +72,35 @@ StatusCode DispatchException(const bool silent)
return status;
}
+StatusCode DispatchExceptionCatchAll(const bool silent)
+{
+ const char *message = nullptr;
+ StatusCode status;
+
+ try {
+ throw;
+ } catch (BLASError &e) {
+ // no message is printed for invalid argument errors
+ status = e.status();
+ } catch (CLCudaAPIError &e) {
+ message = e.what();
+ status = static_cast<StatusCode>(e.status());
+ } catch (RuntimeErrorCode &e) {
+ message = e.what();
+ status = e.status();
+ } catch (Error<std::runtime_error> &e) {
+ message = e.what();
+ status = StatusCode::kUnknownError;
+ } catch (...) {
+ message = "unknown exception type";
+ status = StatusCode::kUnknownError;
+ }
+
+ if (message && !silent) {
+ fprintf(stderr, "CLBlast: %s\n", message);
+ }
+ return status;
+}
// =================================================================================================
StatusCode DispatchExceptionForC()