исключение броска прерывания Matlab - PullRequest
6 голосов
/ 25 мая 2011

Я бы хотел перехватывать любые вызовы control - c в качестве исключения, чтобы я мог обрабатывать прерывания менее разрушительным образом.Единственное обсуждение, которое я нашел в Интернете, было этой веткой обмена matlab с 2009 года. Мне было интересно, знает ли кто-нибудь о новом решении, которое могло бы появиться в более поздних версиях matlab.Спасибо!

Ответы [ 2 ]

8 голосов
/ 25 мая 2011

Когда вы нажимаете Ctrl C , MATLAB интерпретирует его как прерывание. Я не думаю, что есть способ для вас перехватить вызов и сделать что-то вроде перехода к другому циклу или около того, например.

Однако вы можете использовать функцию onCleanup для выполнения таких операций, как закрытие дескрипторов открытых файлов, удаление временных файлов, запись журнала, отображение сообщения или даже сохранение рабочего пространства до прерывания MATLAB. Однако его нужно вызывать изнутри функции.

Вот простой иллюстративный пример

function test
currentDir=pwd;
cd 'path to some folder'
c=onCleanup(@()cd(currentDir));

for i=1:...
    %#some computations here
end 

Поэтому, когда эта функция запускается и вы прерываете ее, она возвращает вас в ту же папку, в которой вы находились, когда запускали ее. Это удобно, если вы не застряли в какой-то случайной папке и вам нужно каждый раз вводить вручную.

1 голос
/ 26 мая 2011

Как и метод onCleanup, обратите внимание, что вы можете написать свой собственный подобный объект, наследуя handle и реализуя метод delete.Документ здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...