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"








目录
相关文章
|
10月前
|
算法 Python
【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)
【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)
479 152
|
机器学习/深度学习 数据采集 缓存
为什么大厂面试官都在问XGBoost?
作为机器学习面试的必考题,XGBoost为什么如此重要?本文用通俗易懂的方式,带你掌握XGBoost的核心知识点,让你在面试中侃侃而谈,轻松拿下offer!
781 1
|
Ubuntu Linux 网络安全
在Linux上安装软件有多种方法
在Linux上安装软件有多种方法
855 64
|
前端开发 Java 应用服务中间件
SpringBoot整合Netty搭建高性能Websocket服务器(实现聊天功能)
之前使用Springboot整合了websocket,实现了一个后端向前端推送信息的基本小案例,这篇文章主要是增加了一个新的框架就是Netty,实现一个高性能的websocket服务器,并结合前端代码,实现一个基本的聊天功能。你可以根据自己的业务需求进行更改。 这里假设你已经了解了Netty和websocket的相关知识,仅仅是想通过Springboot来整合他们。根据之前大家的需求,代码已经上传到了github上。在文末给出。 废话不多说,直接看步骤代码。
2422 0
SpringBoot整合Netty搭建高性能Websocket服务器(实现聊天功能)
|
网络协议 程序员 数据库
什么是公网IP和内网IP
【10月更文挑战第27天】公网IP与内网IP是网络通信中的两个重要概念。公网IP是互联网上的唯一标识,而内网IP仅在局域网内部有效,用于局域网内的设备通信。由于IPv4地址资源有限,通常一个公司或家庭只有一个公网IP,内部设备通过NAT(网络地址转换)技术共享该公网IP访问互联网。这样不仅节省了IP资源,还提高了网络安全性和稳定性。
1845 0
|
前端开发
DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作)
DSP开发软件css(10)使用基础(汉化、工程导入、设置目标配置文件、选择仿真器和芯片型号、添加文件|库路径、编译下载等操作)
512 0
|
存储 监控 数据可视化
uiu
|
弹性计算 分布式计算 Hadoop
Docker + Hadoop 搭建完全分布式
Docker + Hadoop 搭建完全分布式
uiu
1414 0
|
算法 关系型数据库 数据挖掘
实例分割算法综述
实例分割算法综述
747 0
|
存储 小程序
微信小程序游戏开发│石头剪刀布游戏(附源码)
微信小程序游戏开发│石头剪刀布游戏(附源码)
1334 0
微信小程序游戏开发│石头剪刀布游戏(附源码)