functions – ¿Cuándo debe definirse una función * no * con "abortar"?

Pregunta:

Si define una función con el argumento abort , su función abortará tan pronto como se detecte un error. ¿Hay algún caso en el que esto no sea lo que querrías?

Incluso si su función necesita realizar una limpieza final, esperaría que usar finally en combinación con abort sería la mejor práctica, por ejemplo

function! Foo() abort
  call s:make_mess()
  try
    call s:might_fail()
  finally
    call s:cleanup()
  endtry
endfunction

¿Hay algún caso en el que realmente desee un comportamiento sin aborto?

Respuesta:

Discl .: Es solo una conjetura de mi parte.

abort no existía cuando se introdujo la function . Supongo que para no romper el código existente, se decidió no cambiar el comportamiento actual y proporcionar otro comportamiento solo cuando las funciones se anotan explícitamente.

Ahora bien, ¿dónde no deberíamos usarlo? No veo una buena razón. Incluso si una función no anotada continúa después de un error, observamos muchos mensajes de error molestos sobre declaraciones de control no balanceadas ( if , while …).

Cuando ejecuto un código que puede fallar, ¡prefiero ser explícito con silent! , try...catch o cualquier otro enfoque específico. Tengo muchos no abort funciones -annotated, es sólo una señal de que son muy antiguos y que no les haya actualizado todavía.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım