Python 相当于 MATLAB 的 rethrow()



我正在尝试用Python移植一个可工作的MATLAB代码。我正在尝试创建大小为(rowscols(的var数组。如果引发异常,我会捕获它,然后再次尝试创建大小为(rowscols-1(的var数组。如果cols变为零,那么我不能做任何其他事情,所以我rethrow以前捕获的异常。

代码片段如下:

% rows, cols init
success = false;
while(~success)
try
var = zeros(rows, cols);
success = True;
catch ME
warning('process memory','Decreasing cols value because out of memory');
success = false;
var = [];
cols = cols - 1;
if (cols < 1)
rethrow(ME);
end
end
end

rethrow的文档说明:

rethrow保留原始异常信息,并使您能够追溯原始错误的来源,而不是从MATLAB执行方法的位置创建堆栈。

我的问题是:我应该用Python写什么才能与MATLAB的rethrow获得相同的结果

在Python中,我写了以下内容。这足够吗?

# rows, cols init
success = False
while not success:
try:
var = np.zeros([rows, cols])
success = True
except MemoryError as e:
print('Process memory: Decreasing cols value because out of memory')
success = False
var = []
cols -= 1
if cols < 1:
raise(e)

对应的语法只是raise:raise e(注意:它不是一个函数(为自己添加堆栈跟踪条目。(在Python 2中,它取代了以前的堆栈,就像MATLAB的普通throw一样,但Python 3扩展了它。(

相关内容

  • 没有找到相关文章

最新更新