2017-12-04 7 views
1

나는 외부 임원을 부르고있다. MATLAB 코드 내에서 system() 명령을 사용하여 (필자가 작성하지 않은) 파일을 복사하십시오. 어떤 이유로 외부 파일 s/t가 Segmentation 오류를 제공하고 코드를 다시 실행하면 문제가 해결됩니다.try-catch를 사용하여 외부 코드의 세그먼트 화 오류를 잡는 방법?

따라서 다른 언어에서와 마찬가지로 나는 전체 프로세스를 중지하지 않고 오류를 잡으려고 trycatch을 사용하고 있습니다. 내가 작성한 내용은 다음과 같습니다.

flag = false; 
while(~flag) 
    try 
     system('….'); 
     flag = true; 
    catch MExc 
     flag = false; 
    end 
end 

그러나 오류는 발생하지 않습니다. 그것을 고치는 방법?

+0

오류가 무엇을? – Eppicurt

+0

설명서에서 [*** examples ***] (https://www.mathworks.com/help/matlab/ref/try.html#bujy28i-3)을 보았습니까? –

답변

0

Matlab에서 호출 할 때 외부 응용 프로그램에 의해 던져진 예외를 잡을 수 있을지는 의문입니다. (실제로는 의심의 여지가 없지만 문장은 훨씬 더 우아합니다.) 어쨌든, 내 지식에서 오류없이 종료 응용 프로그램 같음 ExitCode 반환해야합니다.

는 다행히 system 함수는 첫번째 출력 인수 (official documentation)로 그 값을 반환합니다, 그래서 대신 다음 코드를 시도 :

status = -1; 

while (status ~= 0) 
    [status,cmdout] = system('...'); 
end 

% do something with cmdout