How to use try/catch so that my program rerun until it correct ?

16 ビュー (過去 30 日間)
Tuong Nguyen Minh
Tuong Nguyen Minh 2020 年 7 月 16 日
コメント済み: Tuong Nguyen Minh 2020 年 7 月 17 日
Dear Matlab users,
I need to process a large amount of data using parfor and I am running into a problem where my program can sometime success, sometime not success
parfor i = 1:100
MyProgram
end
Is there anyway to utilize the try/catch statement so that everytime when my progragram run into some kind of error, the worker will
1/ Retry untill success
2/ Put a warning about the iteration i and then abandon the current job to move on
Thank you very much

採用された回答

Walter Roberson
Walter Roberson 2020 年 7 月 16 日
niters = 100;
status = logical(niters, 1);
message = cell(niters, 1);
parfor i = 1 : niters
blah blah blah
try
something
status(i) = true;
message{i} = [];
catch ME
status(i) = false;
message{i} = ME;
end
end
  6 件のコメント
Walter Roberson
Walter Roberson 2020 年 7 月 16 日
You do not have to keep track of retries; you could just let it retry indefinitely. That would make the code a bit more simple.
niters = 100;
parfor i = 1 : niters
blah blah initialization
while true
blah blah anything that needs to be reset every retry
try
something
break; %you did not fail, so you can stop retrying.
end
end
end
Perhaps it might be more clear to you as
niters = 100;
parfor i = 1 : niters
blah blah initialization
failed = true;
while failed
blah blah anything that needs to be reset every retry
try
something
failed = false;
end
end
end
Tuong Nguyen Minh
Tuong Nguyen Minh 2020 年 7 月 17 日
Oh thank you very much, I did not know that this try catch command would even be that flexible. Your explanation is excellent and the code organization is very thoughful !

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

製品


リリース

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by