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,它们只是如此排列。

字节码设计

猜你喜欢

转载自www.cnblogs.com/skiars/p/11746223.html
今日推荐