;;; Copyright © 2019 - 2023 Jakob L. Kreuze ;;; ;;; 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 ;;; . (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))))