try catch 块不工作

try catch block not working

可能有人知道为什么这个 try catch 块循环不起作用。我希望代码在用户输入字符串而不是数字时转到 catch 块,但它似乎不想这样做。

x = 1;
while x == 1
    try
        degree = input('Please enter the degree of the polynomial of interest: ');
        if degree > 0 && degree <= 4
            x = 0;
        else
            disp('Please Enter a degree from 1 to 4')
        end
    catch
        exit = input('do you wish to exit (Y/N)','s');
        if strcmp(exit,'Y')
            break
        else
            disp('Please enter an integer this time')
        end
    end
end

您还必须检测错误情况(例如,如果输入的度数不是整数)并抛出 MException 类型的异常以供 catch 块捕获。

类似于:

x = 1;
while x == 1
    try
        degree = input('Please enter the degree of the polynomial of interest: ');
        if ~isa(degree,'integer')
           ME = MException('MyFunction:notInteger', ...
           'Variable %s not an integer',degree);
           throw(ME)
        end
        if degree > 0 && degree <= 4
            x = 0;
        else
            disp('Please Enter a degree from 1 to 4')
        end
    catch ME
        exit = input('do you wish to exit (Y/N)','s');
        if strcmp(exit,'Y')
            break
        else
            disp('Please enter an integer this time')
        end
    end
end

根据问题的具体情况,您可能需要在 catch 块中添加额外的逻辑来处理捕获的异常。