gpt4 book ai didi

matlab - 如何在 matlab 中出错时默认到脚本的位置

转载 作者:行者123 更新时间:2023-12-02 07:19:54 25 4
gpt4 key购买 nike

我有一个位于路径的 Matlab(R2017b) 脚本:

路径 1: C:\ComputeCode\Scr1.m

和一个像这样的脚本:

路径 2:C:\ComputeCode\OtherFiles\Scr2.m

Scr1.m 有一段代码可以做如下一堆事情:

   %..... Scri.m.....%
..open files and do some processing...
cd(path2)
.. execute Scri2.m and do some processing ...

问题是如果 Scr2.m 有错误,控制不会回到路径 1,而是停留在路径 2。
如何在 Scr1.m 的开头添加一些代码,以便每当出现任何异常/错误时matlab中的pccurs,总是默认到path1执行。

最佳答案

实现此目的的正确方法是使用绝对文件路径而不是相对路径,这样您就不必担心必须 cd 进入目录才能获得正确的功能。

其他方法包括:

onCleanup ,它在输出对象被销毁时执行代码。请注意,这将要求您将 Scr1 设置为 function为了以最少的额外努力工作。

例如,我们有SOcode.m:

function SOcode
home = pwd; % Store base directory
cleanupObj = onCleanup(@()cd(home));

cd(fullfile('./testfldr')) % Use fullfile for platform independence
asdf
end

./asdf.m,其中包含一个错误:

disp(a)

在执行 SOcode 时,您将收到一个错误:

>> SOcode
Undefined function or variable 'a'.

Error in asdf (line 1)
disp(a)

Error in SOcode (line 6)
asdf

但会返回到基本目录。


或者,您可以使用 try/catch在重新抛出错误之前捕获异常并返回主目录。这种方法不要求 Scr1 是一个函数。

例如,我们现在有SOcode.m:

home = pwd;

cd(fullfile('./testfldr'))

try
asdf
catch e
cd(home)
rethrow(e)
end

使用相同的./asdf.m,得到相同的结果。

关于matlab - 如何在 matlab 中出错时默认到脚本的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49182240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com