Scilab中try/catch内continue语句失效问题求助
Scilab中try/catch内continue失效的解决方法
问题的核心是Scilab里try/catch块内的continue只会退出当前异常处理块,不会直接跳转到内层for循环的下一次迭代,导致后续的alfa_FB赋值语句依然执行,引发未定义变量错误。
以下是两种可靠的解决方式:
方法一:使用成功标志变量
通过布尔变量标记try块是否执行成功,仅在成功时执行后续代码:
for r = 1:rows for c = 1:columns success = %t; try FBJ = acosd((BF^2 + BJ^2 - FJ^2)/(2*BF*BJ)); catch success = %f; end if success then alfa_FB = alfa_JB + FBJ; end end end
方法二:将后续代码移入try块
直接把alfa_FB的赋值语句放到try块内,一旦触发异常,后续代码会被直接跳过:
for r = 1:rows for c = 1:columns try FBJ = acosd((BF^2 + BJ^2 - FJ^2)/(2*BF*BJ)); alfa_FB = alfa_JB + FBJ; catch continue end end end
第二种方法更简洁:当try块内计算成功时才执行赋值,异常触发时直接进入catch执行continue,跳过整个try块剩余内容,直接进入下一轮内层循环迭代。
内容的提问来源于stack exchange,提问作者Mr Layman
相关产品推荐
相关产品推荐

