首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ada:违反"No_Exception_Propagation“

Ada:违反"No_Exception_Propagation“
EN

Stack Overflow用户
提问于 2017-01-27 21:43:35
回答 1查看 181关注 0票数 1

在LED_Demo STM32示例项目中,我有以下代码(在GPS中编译):

代码语言:javascript
复制
procedure Does_Nothing is
begin
   Null;
exception
   when others =>
      Null;
end Does_Nothing;

如果我将相同的代码修改为下面的代码,它将不会编译。我得到了“违反限制No_Exception_Propagation”的错误。

代码语言:javascript
复制
procedure Does_Nothing is
begin
   Null;
exception
   when Error: others =>
      UART.Put(Exception_Information(Error));
end Does_Nothing;

有人能解释一下为什么会这样吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-27 21:51:26

这一点在文件中作了解释。

005fPropagation.html

(强调后加)

5.1.28 No_Exception_Propagation 这个限制保证异常永远不会传播到外部子程序范围。唯一可能引发异常的情况是,当处理程序静态地位于同一个子程序中时,因此引发的效果实质上类似于goto语句。任何其他raise语句(隐式或显式)都将被视为未处理。允许异常处理程序,,但可能不包含异常发生标识符(异常选择)。此外,不允许使用包GNAT.Current_Exception,也不允许使用reraise语句(不使用操作数引发)。

标识符Error违反了限制。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41903494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档