lisp里的状况处理

简介: 首先lisp里面的异常处理真正的名字是状况系统condition system,下面是这个condition system的演示: 最简单的 [1]> (/ 1 0) *** - /: division by zero The following restarts are

lisp里面的异常处理采用的是condition system,下面是这个condition system的演示:



最简单的


[1]> (/ 1 0)

*** - /: division by zero
The following restarts are available:
ABORT          :R1      Abort main loop
Break 1 [2]> :R1

[3]>


这个是被零除状况,运行时发现这个状况,提示有ABORT重启可以选择,选择这个重启退出.下面有添加自定义的重启的例子.


捕捉状况并处理

[3]> (handler-case (/ 1 0) (error () "Dived by 0"))
"Dived by 0"


添加自定义启动

[4]> (restart-case (/ 1 0) (r () "Restart R") (rr () "Restart RR") )

*** - /: division by zero
The following restarts are available:
R              :R1      R
RR             :R2      RR
ABORT          :R3      Abort main loop
Break 1 [5]> :R2
"Restart RR"



这里定义了R RR这两个重启,lisp可以定义多个重启,对一种状况可以采用多种恢复方案.


状况处理选择自定义启动


Break 2 [8]> (handler-bind ((error #'(lambda (c) (invoke-restart 'rr)))) (restart-case (/ 1 0) (r () "Restart R") (rr () "Restart RR")))
"Restart RR"








目录
相关文章
|
2月前
|
安全 前端开发 PHP
警惕!Python 中少为人知的 10 个安全陷阱!
警惕!Python 中少为人知的 10 个安全陷阱!
25 1
|
1月前
|
程序员 Python
救命!揭秘编程语言中被低估的神器——IF语句
救命!揭秘编程语言中被低估的神器——IF语句
11 2
|
1月前
|
Rust 监控 数据安全/隐私保护
Rust语言在员工屏幕监控系统中的应用指南
员工屏幕监控系统在现代企业管理中扮演着重要角色。它们能够帮助企业监控员工的活动,确保他们的工作效率和数据安全。在这篇文章中,我们将探讨如何使用Rust语言构建一个简单而高效的员工屏幕监控系统,并提供一些代码示例以帮助你入门。
109 0
|
2月前
|
Rust 安全 前端开发
Rust还是其他语言:考量因素与案例分析
【2月更文挑战第1天】本文将探讨在选择编程语言时,为什么Rust可能会成为理想的选择。我们将分析Rust的主要优势,如内存安全、性能、并发编程和所有权系统,并将其与其他流行的编程语言进行比较。此外,我们还将通过具体的案例分析,展示Rust在实际应用中的优势和应用场景。
|
9月前
|
NoSQL 前端开发 测试技术
编程之你不知道的坑,足以致命!
编程之你不知道的坑,足以致命!
67 0
编程之你不知道的坑,足以致命!
|
自然语言处理 程序员
程序员如何在繁忙的工作中高效学英语
最最重要的是要去学!投入时间去学习,英语学习属于没有太多捷径,必须要投入大量时间去做的事。当然,虽然没有捷径,还是有一些方法和技巧可以提高一些速度的。但是最重要的是要做好心理准备,这是一场持久战。
738 0
|
程序员 区块链 Python
Python帮助万千程序员远离猝死悲剧
既然他人不关心程序员,我们只能学会自我关怀了。今天我们就用Python来帮助万千程序员远离猝死!那么,今天我们用Python开发一个久坐提醒小工具,让每个程序员都能合理休息,定时起身走动走动,远离猝死危害!
163 0
|
Java Unix 编译器
哦!这该死的 C 语言!(一)
C 语言是一门抽象的、面向过程的语言,C 语言广泛应用于底层开发,C 语言在计算机体系中占据着不可替代的作用,可以说 C 语言是编程的基础,也就是说,不管你学习任何语言,都应该把 C 语言放在首先要学的位置上。
哦!这该死的 C 语言!(一)
|
存储 编译器 程序员
哦!这该死的 C 语言!(三)
C 语言是一门抽象的、面向过程的语言,C 语言广泛应用于底层开发,C 语言在计算机体系中占据着不可替代的作用,可以说 C 语言是编程的基础,也就是说,不管你学习任何语言,都应该把 C 语言放在首先要学的位置上。
哦!这该死的 C 语言!(三)
|
存储 缓存 安全
哦!这该死的 C 语言!(二)
C 语言是一门抽象的、面向过程的语言,C 语言广泛应用于底层开发,C 语言在计算机体系中占据着不可替代的作用,可以说 C 语言是编程的基础,也就是说,不管你学习任何语言,都应该把 C 语言放在首先要学的位置上。
哦!这该死的 C 语言!(二)