鹦鹉虚拟机/异常子系统
外观
< 鹦鹉虚拟机
异常处理已成为大多数现代编程语言中的基本功能。鹦鹉,因为它旨在托管许多这样的语言,必须支持一个强大的异常系统。鹦鹉不仅使用异常进行错误处理和恢复,而且还鼓励使用控制流异常来实现这些语言的高级控制流功能。这意味着异常子系统是语言实现者必须熟悉的最重要的子系统之一。
鹦鹉的异常系统目前正在重新实现,使其更强大、可扩展、内部一致和健壮。本页中的一些信息可能已过时。 |
异常被分解为两个主要部分:异常对象和异常处理程序。异常处理程序在许多方面类似于子例程,必须在使用前专门在鹦鹉中注册。当鹦鹉检测到错误时,它会通过包含有关错误的信息、当前控制流状态的延续以及其他一些信息来创建一个异常对象。异常,就像鹦鹉中的大多数其他东西一样,是 PMC,可以像其他 PMC 一样存储、操作和使用。
创建异常对象后,鹦鹉会查看其处理程序列表,并将异常对象传递给每个处理程序。处理程序存储在类似于堆栈的结构中,最近注册的处理程序将首先访问异常对象。处理程序可以执行以下几种操作之一。首先,它可以处理异常:它可以修复错误,调用异常对象中的返回延续,并将控制流返回到发生错误之前的状态。其次,它可以重新抛出异常,将其传递给堆栈中的下一个处理程序。第三,它可以忽略异常。被忽略或没有可用的处理程序的异常会导致鹦鹉退出。