CoffeeScript - Gestione delle eccezioni

Un'eccezione (o un evento eccezionale) è un problema che si verifica durante l'esecuzione di un programma. Quando si verifica un'eccezione, il normale flusso del programma viene interrotto e il programma / applicazione termina in modo anomalo, il che non è consigliato, pertanto è necessario gestire queste eccezioni.

Un'eccezione può verificarsi per molti motivi diversi. Di seguito sono riportati alcuni scenari in cui si verifica un'eccezione.

  • Un utente ha inserito dati non validi.
  • Impossibile trovare un file che deve essere aperto.

Eccezioni in CoffeeScript

CoffeeScripts supporta la gestione di eccezioni / errori utilizzando l'estensione try catch and finallyblocchi. Le funzionalità di questi blocchi sono le stesse di JavaScript, iltry blocco contiene le dichiarazioni eccezionali, il catch block ha l'azione da eseguire quando si verifica un'eccezione e il finally block viene utilizzato per eseguire le istruzioni incondizionatamente.

Di seguito sono riportate le sintassi di try catch e finally blocchi in 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

Il try blocco deve essere seguito esattamente da uno catch blocco o uno finallyblocco (o uno di entrambi). Quando si verifica un'eccezione intry blocco, l'eccezione viene inserita in e e il catchblocco viene eseguito. L'opzionalefinally block viene eseguito incondizionatamente dopo try / catch.

Esempio

L'esempio seguente mostra la gestione delle eccezioni utilizzando i blocchi try and catch in CoffeeScript. Qui stiamo cercando di utilizzare un simbolo non definito nell'operazione CoffeeScript e abbiamo gestito l'errore che si è verificato utilizzando iltry e catchblocchi. Salva questo codice in un file con il nomeException_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

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c Exception_handling.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee Exception_handling.coffee

All'esecuzione, il file CoffeeScript produce il seguente output.

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

Il blocco finale

Possiamo anche riscrivere l'esempio sopra usando finallybloccare. Se lo facciamo, il contenuto di questo blocco viene eseguito incondizionatamente dopotry e catch. Salva questo codice in un file con il nomeException_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"

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c Exception_handling_finally.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee Exception_handling_finally.coffee

All'esecuzione, il file CoffeeScript produce il seguente output.

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 dichiarazione di lancio

CoffeeScript supporta anche l'estensione throwdichiarazione. Puoi usare l'istruzione throw per sollevare le tue eccezioni incorporate o le tue eccezioni personalizzate. Successivamente queste eccezioni possono essere acquisite e l'utente può intraprendere un'azione appropriata.

Esempio

L'esempio seguente mostra l'utilizzo di throwdichiarazione in CoffeeScript. Salva questo codice in un file con nomethrow_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()

Apri il command prompt e compila il file .coffee come mostrato di seguito.

c:\> coffee -c throw_example.coffee

Durante la compilazione, ti dà il seguente 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);

Ora apri il file command prompt di nuovo ed eseguire il file CoffeeScript come mostrato di seguito.

c:\> coffee throw_example.coffee

All'esecuzione, il file CoffeeScript produce il seguente output.

Divided by zero error.