如何有效地处理Teamcenter ITK C++代码中的错误
How to effectively handle errors in Teamcenter ITK C++ code
如何有效地处理 Teamcenter 服务器自定义代码中 ITK 调用引发的错误?
在 C ITK API 中,函数通常返回一个整数值来表示成功/失败。零(ITK_ok
)通常被视为成功,非零被视为失败。如果发生故障,开发人员必须清理使用的资源(例如,释放内存)。
我见过很多自定义开发人员使用宏编写的代码。甚至当我第一次编写我的第一个Teamcenter ITK程序时,我也这样做了:
#define ITK(A) {
iFail = A;
if (iFail != ITK_ok) {
HANDLE THE ERROR
}
}
我定义了一个这样的宏,并在我进行 ITK 函数调用的任何地方使用它。例如:
ITK(AOM_ask_value_logical(myTag, "attributeName", &attributeValue));
它将每个函数调用的输出与ITK_ok
进行比较并执行某些操作。这没有错。但很多事情实际上可能会出错,而且很难理解。
我什至看到有人这样做:
if (ITK_ok != AOM_ask_value_logical(myTag, "attributeName", &attributeValue))
{
// DO SOMETHING
}
或
int result = ITK_ok
result = AOM_ask_value_logical( myTag, "attributeName", &attributeValue);
if (ITK_ok != result)
{
// DO SOMETHING
}
我的意思是,这个没有错。但它不会增加您的代码大小吗?你没看到口是心非吗?
后来,我意识到我们可以用更优雅的简单方式做到这一点。C++使用类和重载运算符的方式。后来我甚至发现在OOTB(开箱即用)Teamcenter中有一种叫做ResultCheck
的东西。
您需要做的就是包含一个头文件并使用其中的类。
#include <base_utils/ResultCheck.hxx>
此文件声明具有重载赋值运算符的ResultCheck
类。此文件包含在Teamcenter工具包中,您可以查看。
它完成了一项非常小而整洁的任务。有了这个,我前面的陈述被转换为以下内容。
ResultCheck rCheck = ITK_ok;
try
{
rCheck = AOM_ask_value_logical( myTag, "attributeName", &attributeValue);
}
catch (const IFail &ex)
{
// DO SOMETHING
}
对于每个函数调用返回语句,都会创建一个ResultCheck
实例。如果检查头文件,则会看到重载赋值运算符将ifail
(整数)作为输入。在内部,它会检查ifail
是否ITK_ok
。如果不是,那么它只是抛出IFail
.控制权在 catch 块中传递给您,以执行任何您想做的事情。
很简单不是吗?因此,现在让我们删除所有这些宏并使用它...
有类似的 ResultStatus 类做同样的事情。
#include <base_utils/TcResultStatus.hxx>
示例代码会像
ResultStatus rStatus = ITK_ok;
try
{
rStatus = AOM_ask_value_logical( myTag, "attributeName", &attriubuteValue);
}
catch(const IFail &ex)
{
// DO SOMETHING
}
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- VI工作室代码错误无法打开输出文件主.exe
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- 有关矩阵的代码错误导致分段错误(内核转储)
- C++ Schannel POST 400 错误代码错误请求
- Java 本机访问代码错误:"Invalid memory access"
- 代码错误修改
- C++代码错误分配
- "_FCbuild"不能用作函数 - C/C++ 代码错误
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 代码错误(从 1 到 100 找到质数)
- OpenCV VisualStudio,C 代码错误尝试访问像素
- 当我使用的教程完全没有错误时,为什么我的代码错误
- 简单的NOOB C 输入/输出问题:代码错误
- 为什么enumProcessModules返回false值和299代码错误
- WinhttpSetoption()失败设置TLSV1.2,带有错误代码错误_internet_incorrect_ha
- 苹果安全传输代码错误
- C++ - 国际象棋主教移动代码错误
- 导入Python库时,嵌入了Python代码错误
- 编译提升C 代码错误