CoffeeScript - Manejo de excepciones
Una excepción (o evento excepcional) es un problema que surge durante la ejecución de un programa. Cuando ocurre una excepción, el flujo normal del programa se interrumpe y el programa / aplicación termina de manera anormal, lo cual no se recomienda, por lo tanto, estas excepciones deben manejarse.
Una excepción puede ocurrir por muchas razones diferentes. A continuación, se muestran algunos escenarios en los que se produce una excepción.
- Un usuario ha introducido datos no válidos.
- No se puede encontrar un archivo que debe abrirse.
Excepciones en CoffeeScript
CoffeeScripts admite el manejo de excepciones / errores mediante el try catch and finallybloques. Las funcionalidades de estos bloques son las mismas que en JavaScript, eltry bloque contiene las declaraciones excepcionales, el catch bloque tiene la acción que debe realizarse cuando se produce una excepción, y el finally El bloque se utiliza para ejecutar las declaraciones incondicionalmente.
A continuación se muestran las sintaxis de try catch y finally bloques en CoffeeScript.
try
// Code to run
catch ( e )
// Code to run if an exception occurs
finally
// Code that is always executed regardless of
// an exception occurring
los try El bloque debe ir seguido de exactamente uno catch bloque o uno finallybloque (o uno de ambos). Cuando ocurre una excepción en eltry bloque, la excepción se coloca en e y el catchse ejecuta el bloque. El opcionalfinally block se ejecuta incondicionalmente después de try / catch.
Ejemplo
El siguiente ejemplo demuestra el manejo de excepciones usando bloques try y catch en CoffeeScript. Aquí, estamos tratando de usar un símbolo indefinido en la operación CoffeeScript y manejamos el error ocurrido usando eltry y catchbloques. Guarde este código en un archivo con el nombreException_handling.coffee
try
x = y+20
console.log "The value of x is :" +x
catch e
console.log "exception/error occurred"
console.log "The STACKTRACE for the exception/error occurred is ::"
console.log e.stack
Abre el command prompt y compile el archivo .coffee como se muestra a continuación.
c:\> coffee -c Exception_handling.coffee
Al compilar, le da el siguiente JavaScript.
// Generated by CoffeeScript 1.10.0
(function() {
var e, error, x;
try {
x = y + 20;
console.log("The value of x is :" + x);
} catch (error) {
e = error;
console.log("exception/error occurred");
console.log("The STACKTRACE for the exception/error occurred is ::");
console.log(e.stack);
}
}).call(this);
Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.
c:\> coffee Exception_handling.coffee
Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.
exception/error occurred The STACKTRACE for the exception/error occurred is ::
ReferenceError: y is not defined
at Object.<anonymous> (C:\Examples\strings_exceptions\Exception_handling.coffee:3:7)
at Object.<anonymous> (C:\Examples\strings_exceptions\Exception_handling.coffee:2:1)
at Module._compile (module.js:413:34)
at Object.exports.run (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\coffee-script.js:134:23)
at compileScript (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\command.js:224:29)
at compilePath (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\command.js:174:14)
at Object.exports.run (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\command.js:98:20)
at Object.<anonymous> (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\bin\coffee:7:41)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:139:18)
at node.js:999:3
El bloque finalmente
También podemos reescribir el ejemplo anterior usando finallybloquear. Si lo hacemos, el contenido de este bloque se ejecuta incondicionalmente después detry y catch. Guarde este código en un archivo con el nombreException_handling_finally.coffee
try
x = y+20
console.log "The value of x is :" +x
catch e
console.log "exception/error occurred"
console.log "The STACKTRACE for the exception/error occurred is ::"
console.log e.stack
finally
console.log "This is the statement of finally block"
Abre el command prompt y compile el archivo .coffee como se muestra a continuación.
c:\> coffee -c Exception_handling_finally.coffee
Al compilar, le da el siguiente JavaScript.
// Generated by CoffeeScript 1.10.0
(function() {
var e, error, x;
try {
x = y + 20;
console.log("The value of x is :" + x);
} catch (error) {
e = error;
console.log("exception/error occurred");
console.log("The STACKTRACE for the exception/error occurred is ::");
console.log(e.stack);
} finally {
console.log("This is the statement of finally block");
}
}).call(this);
Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.
c:\> coffee Exception_handling_finally.coffee
Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.
exception/error occurred The STACKTRACE for the exception/error occurred is ::
ReferenceError: y is not defined
at Object.<anonymous> (C:\Examples\strings_exceptions\Exception_handling.coffee:3:7)
at Object.<anonymous> (C:\Examples\strings_exceptions\Exception_handling.coffee:2:1)
at Module._compile (module.js:413:34)
at Object.exports.run (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\coffee-script.js:134:23)
at compileScript (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\command.js:224:29)
at compilePath (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\command.js:174:14)
at Object.exports.run (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\lib\coffee-script\command.js:98:20)
at Object.<anonymous> (C:\Users\Tutorialspoint\AppData\Roaming\npm\node_modules\coffee-script\bin\coffee:7:41)
at Module._compile (module.js:413:34)
at Object.Module._extensions..js (module.js:422:10)
at Module.load (module.js:357:32)
at Function.Module._load (module.js:314:12)
at Function.Module.runMain (module.js:447:10)
at startup (node.js:139:18)
at node.js:999:3
This is the statement of finally block
La declaración de tiro
CoffeeScript también es compatible con throwdeclaración. Puede usar la instrucción throw para generar sus excepciones integradas o sus excepciones personalizadas. Posteriormente, estas excepciones se pueden capturar y puede tomar la acción apropiada.
Ejemplo
El siguiente ejemplo demuestra el uso de la throwdeclaración en CoffeeScript. Guarde este código en un archivo con nombrethrow_example.coffee
myFunc = ->
a = 100
b = 0
try
if b == 0
throw ("Divided by zero error.")
else
c = a / b
catch e
console.log "Error: " + e
myFunc()
Abre el command prompt y compile el archivo .coffee como se muestra a continuación.
c:\> coffee -c throw_example.coffee
Al compilar, le da el siguiente JavaScript.
// Generated by CoffeeScript 1.10.0
(function() {
var myFunc;
myFunc = function() {
var a, b, c, e, error;
a = 100;
b = 0;
try {
if (b === 0) {
throw "Divided by zero error.";
} else {
return c = a / b;
}
} catch (error) {
e = error;
return console.log("Error: " + e);
}
};
myFunc();
}).call(this);
Ahora, abre el command prompt nuevamente y ejecute el archivo CoffeeScript como se muestra a continuación.
c:\> coffee throw_example.coffee
Al ejecutarse, el archivo CoffeeScript produce la siguiente salida.
Divided by zero error.