Detect warning and take action
조회 수: 70 (최근 30일)
이전 댓글 표시
I have a for loop and I call a function inside it. What I want to do, is detect if this function call created any warnings and if so continue. Something like:
for i=1:len
c = my_func1(arguments);
if (any warning)
continue;
end
end
Any suggestions? I tried to use lastwarn, without success though.
댓글 수: 0
채택된 답변
Cam Salzberger
2017년 11월 2일
Hello Ioannis,
for ...
warning('') % Clear last warning message
... run code ...
[warnMsg, warnId] = lastwarn;
if ~isempty(warnMsg)
...react to warning...
end
end
But you said lastwarn didn't work for you. How did you use it? What do you mean it didn't work? What kind of warnings were you seeing that weren't being picked up?
-Cam
댓글 수: 2
Rookienp
2019년 6월 5일
Suggestion in the Matlab 2018b editor:
WARNING('') does not reset the wanring state, use LASTWARN('') instead.
Both ways work though.
추가 답변 (2개)
Guillaume
2017년 11월 2일
편집: Guillaume
2017년 11월 2일
You can treat warnings as errors and thus catch them with a try ... catch statement, however, it is undocumented and may break in a future version. On the other hand, it's been there since 2004.
However, if you want to catch all warnings, you'll have to set them to error one by one since warning('error') or warning('error', 'all') is not supported, just warning('error', specificmsgid).
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Error Handling에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!