簡體   English   中英

在Matlab中防止“ MATLAB:unssignedOutputs”

[英]Preventing “MATLAB:unassignedOutputs” in Matlab

我正在尋找捕捉和處理Matlab中的“ unassignedOuputs”錯誤。 更具體地說,請看下面的代碼:

try
    [out1,out2]= somefunction(in1,in2);
catch err
    if strcmp(err.identifier,'MATLAB:unassignedOutputs')
        <some code>
    else
        rethrow(err);
    end
end

如果“ somefunction”未分配out2並捕獲了導致的錯誤,是否有可能以某種方式從函數中檢索其余輸出(在這種情況下為out1)? 如果不是,是否有一種方法可以忽略該值而重新調用該函數,以使該函數不會引發錯誤?

據我所知,一旦函數因此錯誤而終止,就無法檢索變量。 對於產生第一個輸出但不產生第二個輸出的情況,您可以僅使用一個輸出重試它,就像這樣:

try
    [out1,out2]= somefunction(in1,in2);
catch err
    if strcmp(err.identifier,'MATLAB:unassignedOutputs')
         try
             out2 = [];
             out1 = somefunction(in1, in2);
         catch err2
             % rethrow original error
             rethrow(err)
         end
    else
        rethrow(err);
    end
end

要顯示一條消息,指出未分配哪個輸出,您必須解析err.message (盡管默認消息本身應該相當清晰)。

但是,如果您有兩個以上的輸出,並且您不知道哪些可能未正確定義,那么使此功能正常工作將不是一件容易的事。 而且,如果未定義第一個輸出,則根本無法使用。 在那種情況下,我認為您必須編輯函數本身。

如果特定用例正在檢查一堆都具有相同輸入並提供相同輸出的學生代碼,則另一種選擇是為他們提供功能模板,該模板最后包含檢查輸出是否存在以及是否存在輸出。不會將它們設置為空,並顯示您的自定義消息。

暫無
暫無

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

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