2016-05-17 27 views
2

是否有办法使条件成立,如果在if下的语句/矩阵中出现错误,则执行else下的语句?当'if'部分下的语句出现错误时,如何将控件移动到“if-else”的else部分?

即,

if (some condition) 
some statment1/matrix1/variable1 
some statement2/matrix2/variable2 
some statement3/matrix3/variable3 

else newstatement/matrix %come to else part of the code if any of the statements 1,2 or 3 under if condition yields any error like dimension mismatch or anyother 
end 

回答

6

没有内置的机制跳转到else部分。但你可以使用这样的结构:

condition_flag = (some condition); 
error_flag = false; 

if condition_flag 
    try 
     some statment1/matrix1/variable1 
     some statement2/matrix2/variable2 
     some statement3/matrix3/variable3 
    catch 
     error_flag = true; 
    end 
end 

if ~condition_flag || error_flag 
    %if any of the statements 1,2 or 3 under if condition yields any error like dimension mismatch or anyother 
    .... 
    error_flag = false; 
end 
0

Mohsen Nostrania之一的替代解决方案。

else_flag=true; 
if (condition) 
    try 
    %% The if code 
    else_flag=false; 
    end 
end 
if else_flag 
    %% The else code 
end 

else_flag=false;的命令被执行,只有当condition为真并且<if code>内发生任何错误。

请注意,这两种解决方案都是按照您的要求进行的 - 将执行<if code>命令,直至发生错误,然后执行<else code>

+0

你try-catch块缺少catch语句 – Matt

+0

@马特我知道。如果你不关心错误细节,你可以禁止警告'丢失catch语句并忽略它。如果catch序列被执行,其他代码将被执行。 – Crowley

0

如果一个人想降低if声明TRE号:

try 
    if statement 
    %% The if code 
    else 
    %% Obvious error 
    a(0); 
    end 
catch 
    %% The else code 
end