【问题标题】:Can a matlab function called within a script cause the script to break?在脚本中调用的 matlab 函数会导致脚本中断吗?
【发布时间】:2024-04-26 17:00:02
【问题描述】:

我正在运行一个调用函数的脚本,如果满足某个条件,在函数内部,我希望整个事情终止(我并不是说我想使用 exit 关闭 matlab )。那可能吗?我知道我可以使用returnbreak 返回脚本,但是如果满足此条件,我希望脚本也停止。

【问题讨论】:

  • error
  • 您可以随时检查函数的输出,并确定您的函数是运行结束还是在执行过程中返回。您还可以指定一个输出变量专门用于在某一行返回,并检查主脚本中的变量以使用 return 关键字停止您的脚本。

标签: matlab function return break


【解决方案1】:

我知道的唯一功能是error。这会引发异常,如果调用脚本中没有安装带有trycatch 的异常处理程序,将终止并返回到命令提示符。据我了解,这就是你想要的。但它会打印一条错误消息。如果您使用 try catch 处理程序保护*脚本中的所有代码,这可能会被抑制。但是,这必须针对一个错误,这会使调试(“错误停止”)变得更加困难。

问题是我看到的这种行为的唯一用例(在某个事件上终止整个程序)是发生不可恢复的错误时,在这种情况下打印错误消息确实是合适的。

万一脚本成功终止整个程序并不是真正正确的方法。所有函数都应该返回给上层代码执行一些清理操作,比如保存输出数据等等。

【讨论】:

  • @Adriaan:嗯,但不在同一个脚本中。错误打印后,一切都终止了。我不明白这是怎么回事。
  • @CrisLuengo:是的,但随后调试器会在每个异常处停止,还有那些通常被 try catch 隐藏的异常你通常会得到大量的命中,例如来自 MATLAB 内部代码,也可以在调试 GUI 代码时使用。我用过几次,但尽量避免。