任务:在我的项目中嵌入ECL lisp,设置错误处理和详细的错误报告(在哪里发生,错误的种类等)
我试着这样做:
cl_def_c_function_va(
c_string_to_object("SYSTEM:UNIVERSAL-ERROR-HANDLER"),
LispErrorHandler);ECL没有关于其嵌入式API的文档,也没有关于错误处理的文档...
你能建议一下如何实现它吗?
发布于 2011-10-14 05:30:24
没有全局错误处理程序,因为这不是Common Lisp哲学。如果您想要处理错误,请使用lisp方式。
1)创建一个使用HANDLER-CASE或HANDLER-BIND来设置适当的错误处理程序并捕获要计算的表单周围的错误的函数。就像这样
(DEFUN MY-EVAL (FORM) (处理程序-CASE (EVAL FORM) (错误(C) ...) )(MY-ERROR (C) ...)
这个函数可以在你的C代码中定义并调用。
2)使用ECL创建的捕获所有错误的函数。最重要的是si_safe_eval(表单、环境、error_value)。它在一个环境(通常是Cnil)中评估lisp表单,如果遇到一些错误,则返回其输出或ERROR_VALUE。
使用一种或另一种技术的一些示例:http://thread.gmane.org/gmane.lisp.ecl.general/5365 (第二条消息) http://thread.gmane.org/gmane.lisp.ecl.general/8526/focus=8529
https://stackoverflow.com/questions/7755661
复制相似问题