Exception handling 什么';重启处理程序的意义何在?

Exception handling 什么';重启处理程序的意义何在?,exception-handling,dylan,Exception Handling,Dylan,重新启动处理程序必须从另一个处理程序中发出信号,还是可以由检测到异常情况的代码直接发出信号 如果必须从处理程序中发出信号,为什么?这似乎是不必要的额外步骤 与常规处理程序相比,重启处理程序的附加值是多少;如果我们完全不使用重启处理程序(但不使用常规处理程序)?这对语言的力量或表达能力有什么影响吗?下面的答案应该持保留态度。这是基于我对中“条件”一节的理解,但我从未写过一行Dylan代码,甚至没有读过比上述章节更多的参考手册 重新启动处理程序必须从另一个处理程序中发出信号,还是可以由检测到异常情况

重新启动处理程序必须从另一个处理程序中发出信号,还是可以由检测到异常情况的代码直接发出信号

如果必须从处理程序中发出信号,为什么?这似乎是不必要的额外步骤


与常规处理程序相比,重启处理程序的附加值是多少;如果我们完全不使用重启处理程序(但不使用常规处理程序)?这对语言的力量或表达能力有什么影响吗?

下面的答案应该持保留态度。这是基于我对中“条件”一节的理解,但我从未写过一行Dylan代码,甚至没有读过比上述章节更多的参考手册

重新启动处理程序必须从另一个处理程序中发出信号,还是可以由检测到异常情况的代码直接发出信号

重新启动
是一种
条件
,如中所示。只要
signal
语句在语法上有效,就可以对其进行
signal
-ed。与非重启条件下的处理程序不同,没有特殊的机制来安装用于重启条件下的处理程序(与常见的Lisp和R等语言形成对比)

发信号通知
重新启动
与发信号通知非
重新启动
条件的唯一区别在于,如果
重新启动
处理程序是从另一个处理程序中发出的
信号
,即使
重新启动
处理程序返回,词汇上跟随
信号
-ing的其余处理程序代码也不会执行。在这种情况下,
重新启动发出信号的处理程序的执行,以及调用此处理程序的处理程序的执行,都会停止,
重新启动
处理程序返回的值成为这些处理程序返回的值。(“如果重新启动处理程序返回一些值,signal将返回这些值,调用signal的处理程序也将返回这些值。从发出原始条件信号的信令单元调用signal将返回相同的值,信令单元将按照这些值的指示进行恢复。”)

我不清楚如果
重新启动
处理程序执行非本地退出,目标是装置内
重新启动
处理程序发出信号
-ed的位置,会发生什么情况

与常规处理程序相比,重启处理程序的附加值是多少;如果我们完全不使用重启处理程序(但不使用常规处理程序)?这会对语言的力量或表达能力产生影响吗

重启
机制实际上是一个
开关
语句,其选择条件由定义
开关
语句的函数外部的代码动态确定。非
重启
条件可以模拟
重启
信号,但
重启
机制提供了两个正式的功能,否则必须按照惯例建立这两个功能,以实现类似的功能:

  • 当一个
    重新启动
    处理程序在从另一个处理程序发出
    信号后返回时,另一个处理程序中的其余代码将自动跳过,处理程序将返回
    重新启动
    处理程序返回的值
  • 重新启动
    条件可以通过其类型进行正式识别。如果没有
    重新启动
    类型,则如果需要识别
    重新启动
    条件,例如为了在调试器的恢复菜单中列出这些条件,则需要遵循其他约定(“交互式调试器应向用户提供以下功能:向适用于重启处理程序的任何重启发送信号,并在条件的恢复协议允许的情况下返回。例如,这可以通过标题为“recovery”(恢复)的菜单来完成。”)