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, ...]:
:捕获Exception1
、Exception2
等异常。excpet Exception, arg
:捕获Exception
异常,同时获取一个额外参数arg
。excpet [Exception1, Exception2, ...], arg
:捕获Exception1
、Exception2
等异常,同时获取一个额外参数arg
。except (e)
:将捕获的异常对象存入变量e
,任何异常都会被捕获。except (e), arg:
:将捕获的异常对象存入变量e
,任何异常都会被捕获。同时获取一个额外参数arg
。
注意,except [...]:
这种写法中的方括号虽然类似于 list
字面量的写法,但是前者方括号中所有的值并不构成 list
,它们只是如此排列。
字节码设计
以上是关于Berry 异常处理实现的主要内容,如果未能解决你的问题,请参考以下文章
PCL异常处理:pcl 1.8.13rdpartyoostincludeoost-1_64oost ypeofmsvc ypeof_impl.hpp(125): error(代码片段
java.util.MissingResourceException: Can't find bundle for base name init, locale zh_CN问题的处理(代码片段