2011-05-25 12 views
5

me gustaría coger cualquier llamada a de control - c como una excepción, por lo que me ocupo de las interrupciones de una manera menos perjudicial. La única discusión que encontré en línea fue this thread on the matlab exchange de 2009. Me preguntaba si alguien sabe de una nueva solución que puede haber surgido en las versiones más recientes de matlab. ¡Gracias!MATLAB excepción tiro interrupción

Respuesta

7

Al pulsar Ctrl C, MATLAB lo interpreta como una interrupción. No creo que haya una forma de que capte la llamada y haga algo como saltar a un bucle diferente, por ejemplo.

Sin embargo, puede usar la función onCleanup para realizar operaciones como cerrar archivos abiertos, eliminar archivos temporales, escribir un registro, mostrar un mensaje o incluso guardar el área de trabajo antes de que MATLAB interrumpa. Sin embargo, necesita ser llamado desde dentro de una función.

Aquí es un simple ejemplo ilustrativo

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

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

Así que cuando esta función se ejecuta y se interrumpen, que le trae de nuevo a la misma carpeta que estaba cuando se ejecutó. Es bueno tener esto para que no esté atascado en alguna carpeta aleatoria y necesite escribir manualmente cada vez.

+0

Esa fue la esencia de lo publicado en el enlace a Matlab Central, pero gracias por el ejemplo de código. – eykanal

1

Además del método onCleanup, tenga en cuenta que puede escribir su propio objeto similar derivando de handle, e implementando un método delete. El documento es here.

Cuestiones relacionadas