110,567
社区成员
try
{
//轴卡初始化部分
sRtn = mc.GTN_Open(2, 1);
if (sRtn != 0)
throw new Exception("GTN_Open" + sRtn.ToString());
......................................................
}
catch (Exception ex)
{
MessageBox.Show("里面子函数抛出的异常" + ex);
}
当执行到 sRtn = mc.GTN_Open(2, 1);这个函数有异常的时候,别人写的代码这个异常能返回出来给sRtn一个值,然后交给throw new Exception。。
而我写的,执行到这 sRtn = mc.GTN_Open(2, 1);这个函数有异常的时候就直接跑到catch下面了。这是为什么?看了他的代码好像和我写的一样,
两个可能,
1 他做了全局异常捕获,但是这个可能性比较小。
因为全局的异常捕获,不太好单独设置 sRtn=1
2 finally 是不是存在。
catch (Exception ex)
{
MessageBox.Show("里面子函数抛出的异常" + ex.Message);
}
别人能返回1,是因为他在函数里用try catch处理了捕获的异常,而你的没有,所以才会直接抛出异常。
盲猜别人写的mc.GTN_Open里有try catch 所以异常后返回了值, 你写的mc.GTN_Open里没有try catch 所以直接被下面的catch捕获到了
因为mc.GTN_Open(2, 1)内部已经抛异常了
mc.GTN_Open(2, 1);是调用固高运动控制 板卡初始化的函数,已经引用了这个库并且dll放在debug目录里了。