0
我有一個句柄類,例如下面的mclass
,它應該在具有相應輸入參數的另一個函數內部構建。但是,我想檢查類構造函數的輸入參數在類本身的任何地方的構造函數中,並防止創建新的對象句柄,如果輸入不是所需的類型。matlab oop - 我如何處理構造函數的輸入?
classdef mclass < handle
properties
val
end
properties (Dependent)
sval
end
methods
function obj = mclass(varargin)
if nargin == 1
if isnumeric(varargin{1}) && varargin{1} > 0
obj.val = varargin{1};
else
errordlg('Invalid input', 'Constructor', 'modal');
end
else
errordlg('No input', 'Constructor', 'modal');
end
end
function s = get.sval(obj)
s = sqrt(obj.val);
end
end
end
然而,錯誤對話框調用m = mclass;
或m = mclass(0);
從命令窗口,在一起後,變m
仍然在工作區創建。我如何防止m
被創建?
當然,我可以在調用構造函數之前檢查我的其他函數內部的輸入,但無論如何要使其成爲該類的「自檢」特性?
是的,'錯誤'是我的一個解決方法,但是我可以讓它完全發生在程序中嗎?我的意思是,在命令窗口中不應該顯示任何內容(特別是'error使用xxx(line yyy)'error'的錯誤),用戶只需要知道他們錯誤地輸入了什麼,他們不需要關心在哪個函數中錯誤是...... – scmg
然後,您需要使用try,catch和wrap類創建內部另一個函數try,catch。我想不出另一種方式。 – Navan