CoffeeScript - obsługa wyjątków
Wyjątkiem (lub wyjątkowym zdarzeniem) jest problem, który pojawia się podczas wykonywania programu. Gdy wystąpi wyjątek, normalny przepływ programu zostaje zakłócony, a program / aplikacja kończy się nieprawidłowo, co nie jest zalecane, dlatego te wyjątki należy obsługiwać.
Wyjątek może wystąpić z wielu różnych powodów. Oto kilka scenariuszy, w których występuje wyjątek.
- Użytkownik wprowadził nieprawidłowe dane.
- Nie można znaleźć pliku, który należy otworzyć.
Wyjątki w CoffeeScript
CoffeeScripts obsługuje obsługę wyjątków / błędów przy użyciu rozszerzenia try catch and finallyBloki. Funkcjonalności tych bloków są takie same jak w JavaScript, rozszerzenietry blok zawiera wyjątkowe instrukcje, plik catch block ma akcję, która ma zostać wykonana, gdy wystąpi wyjątek, a finally blok służy do bezwarunkowego wykonywania instrukcji.
Poniżej przedstawiono składnie try catch i finally bloki w 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
Plik try po bloku musi następować dokładnie jeden catch blok lub jeden finallyblok (lub jeden z obu). Gdy wyjątek występuje wtry blok, wyjątek jest umieszczony w e i catchblok jest wykonywany. Opcjonalnyfinally blok jest wykonywany bezwarunkowo po try / catch.
Przykład
Poniższy przykład ilustruje obsługę wyjątków przy użyciu bloków try and catch w CoffeeScript. W tym miejscu próbujemy użyć niezdefiniowanego symbolu w operacji CoffeeScript i obsłużyliśmy błąd, który wystąpił przy użyciutry i catchBloki. Zapisz ten kod w pliku o nazwieException_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
Otworzyć command prompt i skompiluj plik .coffee, jak pokazano poniżej.
c:\> coffee -c Exception_handling.coffee
Podczas kompilacji daje następujący 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);
Teraz otwórz command prompt ponownie i uruchom plik CoffeeScript, jak pokazano poniżej.
c:\> coffee Exception_handling.coffee
Podczas wykonywania plik CoffeeScript generuje następujące dane wyjściowe.
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
Ostatni blok
Powyższy przykład możemy również przepisać używając finallyblok. Jeśli to zrobimy, zawartość tego bloku jest wykonywana bezwarunkowo potry i catch. Zapisz ten kod w pliku o nazwieException_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"
Otworzyć command prompt i skompiluj plik .coffee, jak pokazano poniżej.
c:\> coffee -c Exception_handling_finally.coffee
Podczas kompilacji daje następujący 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);
Teraz otwórz command prompt ponownie i uruchom plik CoffeeScript, jak pokazano poniżej.
c:\> coffee Exception_handling_finally.coffee
Podczas wykonywania plik CoffeeScript generuje następujące dane wyjściowe.
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
Instrukcja throw
CoffeeScript obsługuje również throwkomunikat. Możesz użyć instrukcji throw, aby zgłosić wbudowane wyjątki lub niestandardowe wyjątki. Później te wyjątki można przechwycić i podjąć odpowiednie działania.
Przykład
Poniższy przykład ilustruje użycie throwinstrukcja w CoffeeScript. Zapisz ten kod w pliku o nazwiethrow_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()
Otworzyć command prompt i skompiluj plik .coffee, jak pokazano poniżej.
c:\> coffee -c throw_example.coffee
Podczas kompilacji daje następujący 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);
Teraz otwórz command prompt ponownie i uruchom plik CoffeeScript, jak pokazano poniżej.
c:\> coffee throw_example.coffee
Podczas wykonywania plik CoffeeScript generuje następujące dane wyjściowe.
Divided by zero error.