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 块中添加额外的逻辑来处理捕获的异常。
可能有人知道为什么这个 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 块中添加额外的逻辑来处理捕获的异常。