aboutsummaryrefslogtreecommitdiff
path: root/haunt/jakob/dynamic/errors.scm
diff options
context:
space:
mode:
authorJakob L. Kreuze2022-11-23 19:16:45 -0500
committerJakob L. Kreuze2022-11-23 19:23:26 -0500
commit4f1743dad652d9a3781b268294b89d22c57528c0 (patch)
treed15ead9c06b7140f383bcc09c0058963933aea6d /haunt/jakob/dynamic/errors.scm
parent2a7b250df5fa9611c2270c5837fab9fab750563c (diff)
[dynamic] Refactor and improve error reporting with R6RS exceptions
Diffstat (limited to 'haunt/jakob/dynamic/errors.scm')
-rw-r--r--haunt/jakob/dynamic/errors.scm38
1 files changed, 38 insertions, 0 deletions
diff --git a/haunt/jakob/dynamic/errors.scm b/haunt/jakob/dynamic/errors.scm
new file mode 100644
index 0000000..2394cb7
--- /dev/null
+++ b/haunt/jakob/dynamic/errors.scm
@@ -0,0 +1,38 @@
+;;; Copyright © 2019 - 2022 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)
+ #: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