Berry 异常处理实现

Posted skiars

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Berry 异常处理实现相关的知识,希望对你有一定的参考价值。

语法

最近在实现 Berry 的异常处理特性,进过初步的调查后决定使用类似 Python 的 try-except 异常处理模式,为此要引入三个新的关键字:

  • try:表示异常捕获块的开始,位于异常捕获块中的代码抛出的异常将会被捕获,并由 except 语句指定的代码来处理。
  • except:由该关键字构成的语句后跟随一个用于处理指定异常的代码块。
  • raise:该语句用于抛出一个异常。

异常处理的常见写法类似这样:

try
    ...
    raise error
except ErrorName:
    ...
end

在 Berry 中,raise 语句后允许跟 1 到 2 个表达式,第一个表达式为抛出的异常值,第二个可选参数为额外的参数。except 语句的写法则比较多:

  • excpet Exception::捕获 Exception 异常。
  • excpet [Exception1, Exception2, ...]::捕获 Exception1Exception2 等异常。
  • excpet Exception, arg:捕获 Exception 异常,同时获取一个额外参数 arg
  • excpet [Exception1, Exception2, ...], arg:捕获 Exception1Exception2 等异常,同时获取一个额外参数 arg
  • except (e):将捕获的异常对象存入变量 e,任何异常都会被捕获。
  • except (e), arg::将捕获的异常对象存入变量 e,任何异常都会被捕获。同时获取一个额外参数 arg

注意,except [...]: 这种写法中的方括号虽然类似于 list 字面量的写法,但是前者方括号中所有的值并不构成 list,它们只是如此排列。

字节码设计

以上是关于Berry 异常处理实现的主要内容,如果未能解决你的问题,请参考以下文章

Berry 实现:自动扩充的调用栈

PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段

使用片段中的处理程序时出现非法状态异常

Java异常处理机制

java 反射代码片段

java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段