I have a problem with the following try and catch code in MATLAB:
fonster='';
while ~(~isempty(fonster) && isnumeric(fonster) && isreal(fonster) && isfinite(fonster) && (fonster == fix(fonster)) && (fonster > 0))
try
fonster = input('Välj ett heltal till fönsterplatsen du vill lägga grafen i: ');
catch
disp('Du måste mata in ett heltal');
end
end
It never seems to enter the catch part of the code when entering an invalid input as a string to the input function. Instead it just runs the input all over again and ignores my output message. The wierd part is that I'm using a disp within a catch in another place in my code but this time it just doesn't work.
Here are some running examples:
Input without the try and catch statements:
Välj den fönsterplats du vill lägga grafen i: o
Error using input
Undefined function or variable 'o'.
Error in skapaPlot (line 11)
fonster = input('Välj den fönsterplats du vill lägga grafen i:
');
Error in mainMeny (line 17)
plot_handles = skapaPlot(plot_handles);
Välj den fönsterplats du vill lägga grafen i:
With try and catch:
Välj ett heltal till fönsterplatsen du vill lägga grafen i: f
Välj ett heltal till fönsterplatsen du vill lägga grafen i: d
Välj ett heltal till fönsterplatsen du vill lägga grafen i: s
Välj ett heltal till fönsterplatsen du vill lägga grafen i:
Why doesn't it display the disp part?!
Matlab's input expression evaluator will handle any exceptions raised during input, and immediately redisplay the prompt, and the exception will get cleared. So your catch handler never gets to see any exceptions. If you want to manage things yourself, use instead input(..., 's'), which returns the raw string. You can then perform your evaluation using 'eval()':
try
inputstring = input('Välj ett heltal till fönsterplatsen du vill lägga grafen i: ', 's');
fonster = eval(inputstring);
catch
disp('Du måste mata in ett heltal');
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With