A la hora de diseñ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ón del script y, a veces, se da un mensaje de error.
Veamos un ejemplo intentando verbalizar un mensaje con una voz no instalada en el sistema:
say "Hola a todos!" using "Manolo"
Al intentar ejecutar ese código obtendremos el mensaje de error No se ha encontrado la voz.. Debemos controlar esto para que nuestro script siga funcionando perfectamente.
Bloques seguros con try
AppleScript nos permite ejecutar un bloque de código de forma segura utilizando el bloque try. Permitiendo que se ejecute el código pero si aparece un error no se parará la ejecución de nuestro script.
El bloque try utiliza la siguiente sintaxis:
try
-- código a ejecutar de forma segura
end try
Volviendo a nuestro ejemplo anterior ahora podemos evitar que se de el mensaje de error utilizando el bloque try. El código quedaría así:
try
say "Hola a todos!" using "Manolo"
end try
Reaccionando a los errores
A veces nos interesa reaccionar ante la aparición de un error. Por ejemplo, si la voz Manolo no existe, aunque usemos el bloque try tendremos un problema en nuestro script ya que el mensaje nunca llegaá al usuario ya que el mensaje no se verbalizará. La solución pasa por reaccionar al error verbalizando el mensaje de todas formas con cualquier voz que esté disponible. Para ello el bloque try posee la cláusula on error que nos permite definir un sub bloque de código dentro del bloque try que se ejecutará sólo si se produce un error. Su sintaxis es la siguiente:
try
-- Código a ejecutar
on error
-- Código a ejecutar si se produce un error
end try
El código de nuestro ejemplo quedaría así:
try
say "Hola a todos!" using "Manolo"
on error
say "Hola a todos!"
end try
Creando nuestra función
El código necesario para verbalizar un mensaje con una voz en específico de forma segura es candidato a convertirse en una de nuestras funciones habituales. El código podría ser algo como lo siguiente:
on sayWithVoice(texto, nombreDeVoz)
try
say texto using nombreDeVoz
on error
say texto
end try
end sayWithVoice
Para probar nuestra función simplemente debemos llamarla de la siguiente forma:
sayWithVoice("Hola a todos, soy Mónica", "Monica")