1

我目前正在使用cxml-stp框架进行开发,但是在解析时我确实得到了一个cxml-stp:stp-error,它是simple-error的子类,它被记录为格式控制的一种错误提供。

如何打印错误消息?由于这两个 API 都没有提供任何特定的功能,而且简单的FORMAT只是导致对象被打印但不使用提供的 FORMAT 字符串。

例如

(SB-KERNEL:CASE-FAILURE
 ETYPECASE
 #<CXML-STP:STP-ERROR "text includes characters that cannot be ~
                represented in XML at all: ~S"
   {1007814951}>
 (STRING SIMPLE-STRING))
4

2 回答 2

3

只需编写条件对象而不转义:

(write condition :escape nil)
于 2012-06-22T14:00:59.770 回答
1
(defun try-handle-error (err)
  (handler-case
      (error err)
    (serious-condition (condition)
      (apply #'format
         (nconc (list t)
            (cons (simple-condition-format-control condition)
              (simple-condition-format-arguments condition)))))))

(try-handle-error (make-condition
        'simple-error
        :format-control "say something ~s~&"
        :format-arguments '(42)))

这将是一个例子。基本上,格式控制和格式参数是在简单错误类上声明的槽读取器。当您处理错误时,您可以在该错误上调用它们以获取它在创建期间收到的值。

于 2012-06-22T12:07:32.713 回答