首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么TwinCAT语句不能在TwinCAT 4024.7中工作

为什么TwinCAT语句不能在TwinCAT 4024.7中工作
EN

Stack Overflow用户
提问于 2020-03-04 08:02:40
回答 1查看 800关注 0票数 0

我正在尝试新实现的try/catch语句,这些语句可以从TwinCAT 4024.0中获得。但是,编译时会出现以下错误:

当前设备的代码生成器不支持结构化异常处理。

示例代码(来源):

代码语言:javascript
复制
FUNCTION F_Calc : LREAL
VAR_INPUT
  pData     : POINTER TO ARRAY [0..9] OF LREAL;
  nElementA : INT;
  nElementB : INT;
END_VAR
VAR
  exc       : __SYSTEM.ExceptionCode;
END_VAR

__TRY
  F_Calc := pData^[nElementA] / pData^[nElementB];
__CATCH (exc)
  IF (exc = __SYSTEM.ExceptionCode.RTSEXCPT_ARRAYBOUNDS) THEN
    F_Calc := -1;
  ELSIF ((exc = __SYSTEM.ExceptionCode.RTSEXCPT_FPU_DIVIDEBYZERO) OR
         (exc = __SYSTEM.ExceptionCode.RTSEXCPT_DIVIDEBYZERO)) THEN
    F_Calc := -2;
  ELSIF (exc = __SYSTEM.ExceptionCode.RTSEXCPT_ACCESS_VIOLATION) THEN
    F_Calc := -3;
  ELSE
    F_Calc := -4;
  END_IF
__ENDTRY
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-04 08:02:40

结果表明,64位系统还不支持try catch语句。在文章中也提到了这一点。

本文的注释部分介绍了为什么它还不能在64位上工作的原因:

在异常情况下,很多是在内部发生的。例如,必须清理堆栈。特别是对于深度嵌套的方法调用,这可能意味着要做大量工作。我怀疑内存管理在32位和64位下的结构是不同的。但是,我假设这将在以后的构建中为64位系统实现。

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

https://stackoverflow.com/questions/60521446

复制
相关文章

相似问题

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