aboutsummaryrefslogtreecommitdiff
path: root/haunt/jakob/dynamic/errors.scm
diff options
context:
space:
mode:
Diffstat (limited to 'haunt/jakob/dynamic/errors.scm')
-rw-r--r--haunt/jakob/dynamic/errors.scm39
1 files changed, 39 insertions, 0 deletions
diff --git a/haunt/jakob/dynamic/errors.scm b/haunt/jakob/dynamic/errors.scm
new file mode 100644
index 0000000..05f9302
--- /dev/null
+++ b/haunt/jakob/dynamic/errors.scm
@@ -0,0 +1,39 @@
+;;; Copyright © 2019 - 2023 Jakob L. Kreuze <zerodaysfordays@sdf.org>
+;;;
+;;; This program is free software; you can redistribute it and/or
+;;; modify it under the terms of the GNU General Public License as
+;;; published by the Free Software Foundation; either version 3 of the
+;;; License, or (at your option) any later version.
+;;;
+;;; This program is distributed in the hope that it will be useful,
+;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;;; General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with this program. If not, see
+;;; <http://www.gnu.org/licenses/>.
+
+(define-module (jakob dynamic errors)
+ #:use-module (rnrs conditions)
+ #:use-module (rnrs exceptions)
+ #:export (&reportable
+
+ make-reportable-condition
+ reportable-condition?
+
+ reportable-condition-code
+ reportable-condition-message
+
+ panic))
+
+;; Condition that can safely be presented to an API user
+(define-condition-type &reportable &condition
+ make-reportable-condition
+ reportable-condition?
+ (code reportable-condition-code)
+ (message reportable-condition-message))
+
+(define* (panic message #:key (code 400))
+ "Raise MESSAGE as a &reportable condition"
+ (raise (condition (make-reportable-condition code message))))

© 2015 - 2026 Jakob L. Kreuze