diff options
| author | Jakob L. Kreuze | 2022-11-23 19:16:45 -0500 |
|---|---|---|
| committer | Jakob L. Kreuze | 2022-11-23 19:23:26 -0500 |
| commit | 4f1743dad652d9a3781b268294b89d22c57528c0 (patch) | |
| tree | d15ead9c06b7140f383bcc09c0058963933aea6d /haunt/jakob/dynamic/errors.scm | |
| parent | 2a7b250df5fa9611c2270c5837fab9fab750563c (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.scm | 38 |
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)))) |