在LED_Demo STM32示例项目中,我有以下代码(在GPS中编译):
export HADOOP_CLASSPATH=/opt/nz/lib/nzjdbc3.jar
sqoop import -D mapreduce.job.queuename=some_queue
-D yarn.nodemanager.local-dirs=/tmp -D mapreduce.map.log.level=DEBUG
--direct --connect jdbc:netezza://somehost:5480/SOME_DB --table SOME_TBL_1
--username SOMEUSER --password xxxxxxx --target-dir /tmp/netezza/some_tbl_file
--num-mappers 2 --verbose
如果我将相同的代码修改为下面的代码,则无法编译。我收到错误“违反限制No_Exception_Propagation”。
procedure Does_Nothing is
begin
Null;
exception
when others =>
Null;
end Does_Nothing;
有人可以解释为什么会这样吗?
答案 0 :(得分:4)
这在文档中有解释。
https://gcc.gnu.org/onlinedocs/gnat_rm/No_005fException_005fPropagation.html
(强调补充)
5.1.28 No_Exception_Propagation
[GNAT]此限制保证永远不会出现异常 传播到外部子程序范围。唯一一个案例 当处理程序静态地处于相同状态时,可能引发异常 子程序,因此加注的效果基本上就像一个转到 声明。任何其他加注声明(隐式或显式)都将是 被认为是未处理的。允许使用异常处理程序,但可能不允许 包含异常发生标识符(例外选择)。在 此外,不允许使用包
。不允许重新加注语句(不带操作数加注)GNAT.Current_Exception
,
标识符Error
违反了限制。