여러 줄의 코드를 실행하고 싶지만 어떤 줄에서 오류가 발생하는지 확신 할 수 없습니다. 그러나 오류가 발생하면 스크립트에서 해당 줄을 무시하고 계속 진행하고 싶습니다.matlab에 대한 순차적 캐치 엔드 블록
하나의 선택은 오류를 던질 수있는 코드 블록을 건너 뛰는 try-catch-end
블록을 갖는 것입니다. 그러나 오류가 발생하자마자 try 문에서 오류가 발생한 후 나머지 코드는 실행되지 않습니다.
TL : TR : 다음 예제 코드에서 각 줄마다 try-catch-end
블록을 쓰는 것보다 다른 선택이 있습니까?
예제 코드 :
try
disp('1st line');
disp('2nd line');
PRODUCE_ERROR; %throws an error, variable/function does not exist
disp('3rd line'); %%%%%
disp('4th line'); % these lines I would like to keep executing
disp('5th line'); %%%%%
catch
disp('something unexpected happened');
end
출력 : 선호 될 것이다
1st line
2nd line
something unexpected happened
출력 :
1st line
2nd line
something unexpected happened
3rd line
4th line
5th line
관련 : Why should I not wrap every block in "try"-"catch"?
이 문제를 재귀 적으로 해결할 수있는 방법을 생각해 볼 수는 있지만, 아마도 가장 우아한 방법은 아닙니다. – user2305193
오류를 다시 발생시키지 않고 나머지 코드를 계속 진행할 수 있습니다. [mcve]를 게시 할 수 있습니까? – beaker
오류를 다시 발생시키지 않더라도 나머지 'catch'브랜치는 건너 뜁니다. 예를 들어'clear, a = 1; c = 3; –