簡體   English   中英

MATLAB嘗試並捕獲問題

[英]MATLAB try and catch issue

我在MATLAB中遇到以下try和catch代碼有問題:

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

當輸入無效輸入作為輸入函數的字符串時,它似乎永遠不會進入代碼的catch部分。 相反,它只是重新運行輸入並忽略我的輸出消息。 奇怪的是我在代碼中的另一個地方使用了一個catch,但這次它不起作用。

以下是一些運行示例:

沒有try和catch語句的輸入:

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:

嘗試和捕獲:

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: 

為什么不顯示disp部分?!

Matlab的輸入表達式計算器將處理輸入期間引發的任何異常,並立即重新顯示提示,異常將被清除。 所以你的catch處理程序永遠不會看到任何異常。 如果您想自己管理事物,請使用input(...,'s'),它返回原始字符串。 然后,您可以使用'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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM