{"id":577,"date":"2018-08-07T09:00:34","date_gmt":"2018-08-07T08:00:34","guid":{"rendered":"http:\/\/www.programaraciegas.net\/?p=577"},"modified":"2018-07-21T08:29:28","modified_gmt":"2018-07-21T07:29:28","slug":"controlar-errores-de-ejecucion-en-applescript","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=577","title":{"rendered":"Controlar errores de ejecuci\u00f3n en AppleScript"},"content":{"rendered":"<p>A la hora de dise&ntilde;ar y codificar nuestros scripts de AppleScript debemos tener en cuenta que se pueden producir errores y debemos controlar lo que sucede cuando aparecen estos errores.<\/p>\n<p>Por defecto en AppleScript cuando sucede un error se para la ejecuci&oacute;n del script y, a veces, se da un mensaje de error.<\/p>\n<p>Veamos un ejemplo intentando verbalizar un mensaje con una voz no instalada en el sistema:<\/p>\n<p><code><br \/>\nsay \"Hola a todos!\" using \"Manolo\"<br \/>\n<\/code><\/p>\n<p>Al intentar ejecutar ese c&oacute;digo obtendremos el mensaje de error <em>No se ha encontrado la voz.<\/em>. Debemos controlar esto para que nuestro script siga funcionando perfectamente.<\/p>\n<h2>Bloques seguros con try<\/h2>\n<p>AppleScript nos permite ejecutar un bloque de c&oacute;digo de forma segura utilizando el bloque <strong>try<\/strong>. Permitiendo que se ejecute el c&oacute;digo pero si aparece un error no se parar&aacute; la ejecuci&oacute;n de nuestro script.<\/p>\n<p>El bloque <strong>try<\/strong> utiliza la siguiente sintaxis:<\/p>\n<p><code><br \/>\ntry<br \/>\n-- c\u00f3digo a ejecutar de forma segura<br \/>\nend try<br \/>\n<\/code><\/p>\n<p>Volviendo a nuestro ejemplo anterior ahora podemos evitar que se de el mensaje de error utilizando el bloque <strong>try<\/strong>. El c&oacute;digo quedar&iacute;a as&iacute;:<\/p>\n<p><code><br \/>\ntry<br \/>\n\tsay \"Hola a todos!\" using \"Manolo\"<br \/>\nend try<br \/>\n<\/code><\/p>\n<h2>Reaccionando a los errores<\/h2>\n<p>A veces nos interesa reaccionar ante la aparici&oacute;n de un error. Por ejemplo, si la voz <em>Manolo<\/em> no existe, aunque usemos el bloque <strong>try<\/strong> tendremos un problema en nuestro script ya que el mensaje nunca llega&aacute; al usuario ya que el mensaje no se verbalizar&aacute;. La soluci&oacute;n pasa por reaccionar al error verbalizando el mensaje de todas formas con cualquier voz que est&eacute; disponible. Para ello el bloque <strong>try<\/strong> posee la cl&aacute;usula <strong>on error<\/strong> que nos permite definir un sub bloque de c&oacute;digo dentro del bloque <strong>try<\/strong> que se ejecutar&aacute; s&oacute;lo si se produce un error. Su sintaxis es la siguiente:<\/p>\n<p><code><br \/>\ntry<br \/>\n\t-- C\u00f3digo a ejecutar<br \/>\non error<br \/>\n\t-- C\u00f3digo a ejecutar si se produce un error<br \/>\nend try<br \/>\n<\/code><\/p>\n<p>El c&oacute;digo de nuestro ejemplo quedar&iacute;a as&iacute;:<\/p>\n<p><code><br \/>\ntry<br \/>\n\tsay \"Hola a todos!\" using \"Manolo\"<br \/>\non error<br \/>\n\tsay \"Hola a todos!\"<br \/>\nend try<br \/>\n<\/code><\/p>\n<h2>Creando nuestra funci&oacute;n<\/h2>\n<p>El c&oacute;digo necesario para verbalizar un mensaje con una voz en espec&iacute;fico de forma segura es candidato a convertirse en una de nuestras funciones habituales. El c&oacute;digo podr&iacute;a ser algo como lo siguiente:<\/p>\n<p><code><br \/>\non sayWithVoice(texto, nombreDeVoz)<br \/>\n\ttry<br \/>\n\t\tsay texto using nombreDeVoz<br \/>\n\ton error<br \/>\n\t\tsay texto<br \/>\n\tend try<br \/>\nend sayWithVoice<br \/>\n<\/code><\/p>\n<p>Para probar nuestra funci&oacute;n simplemente debemos llamarla de la siguiente forma:<\/p>\n<p><code><br \/>\nsayWithVoice(\"Hola a todos, soy M\u00f3nica\", \"Monica\")<br \/>\n<\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A la hora de dise&ntilde;ar y codificar nuestros scripts de AppleScript debemos tener en cuenta que se pueden producir errores y debemos controlar lo que sucede cuando aparecen estos errores. Por defecto en AppleScript cuando sucede un error se para la ejecuci&oacute;n del script y, a veces, se da un mensaje de error. Veamos un &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=577\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abControlar errores de ejecuci\u00f3n en AppleScript\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80,6],"tags":[83,303,301,82,302],"class_list":["post-577","post","type-post","status-publish","format-standard","hentry","category-applescript","category-programacion","tag-applescript-2","tag-error","tag-errores","tag-script","tag-try"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/577","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=577"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/577\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=577"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=577"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=577"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}