В Matlab docs приведен пример класса, который закрывает файл, если объект удален. Я пытаюсь что-то подобное с объектом последовательного порта, но если мой конструктор не сможет получить действительный дескриптор объекта, его метод delete
обязательно вызовет ошибку.Как обрабатывать неудавшийся конструктор Matlab?
Так что мой вопрос заключается в том, чтобы сделать что-то вроде этого:
classdef Filewriter < handle
properties (Access = private)
FileID
end
methods
function obj = Filewriter(filename)
obj.FileID = fopen(filename,'a'); % if this fails...
end
function writeToFile(obj,text_str)
fprintf(obj.FileID,'%s\n',text_str);
end
function delete(obj)
fclose(obj.FileID); % then this will also fail
end
end
end
... где конструктор может потерпеть неудачу?
Я думаю, что fopen не бросает исключения в matlab ... (просто попробовал это). –
@EugeneSh. Если это действительный COM-порт (серийный) идентификатор порта, он не собирается вызывать ошибку. Однако, если это недействительный COM-порт, он выдаст ошибку, по крайней мере, на моем компьютере. – scai
Я проверил против несуществующего файла. –