Исключение (или исключительное событие) — это проблема, возникающая во время выполнения программы. Когда возникает исключение, нормальный поток программы прерывается, и программа / приложение прерывается ненормально, что не рекомендуется, поэтому эти исключения должны быть обработаны.
Исключение может возникнуть по многим различным причинам. Вот несколько сценариев, где возникает исключение.
- Пользователь ввел неверные данные.
- Файл, который необходимо открыть, не найден.
Исключения в CoffeeScript
CoffeeScripts поддерживает обработку исключений / ошибок с использованием блоков try catch и finally . Функциональные возможности этих блоков такие же, как в JavaScript, блок try содержит исключительные операторы, блок catch имеет действие, которое должно быть выполнено при возникновении исключения, и блок finally используется для безусловного выполнения операторов.
Ниже приведены синтаксисы блоков try catch и finally в 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
За блоком try должен следовать либо один блок catch, либо один блок finally (или один из обоих). Когда в блоке try возникает исключение, оно помещается в e и выполняется блок catch . Необязательный блок finally выполняется безоговорочно после try / catch.
пример
В следующем примере демонстрируется обработка исключений с использованием блоков try и catch в CoffeeScript. Здесь мы пытаемся использовать неопределенный символ в операции CoffeeScript, и мы обработали ошибку, возникшую с помощью блоков try и catch . Сохраните этот код в файле с именем Exception_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
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c Exception_handling.coffee
При компиляции он дает вам следующий 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);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee Exception_handling.coffee
При выполнении файл CoffeeScript производит следующий вывод.
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
Блок наконец
Мы также можем переписать приведенный выше пример, используя блок finally . Если мы сделаем это, содержимое этого блока будет выполнено безоговорочно после try и catch . Сохраните этот код в файле с именем Exception_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"
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c Exception_handling_finally.coffee
При компиляции он дает вам следующий 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);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee Exception_handling_finally.coffee
При выполнении файл CoffeeScript производит следующий вывод.
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
Заявление броска
CoffeeScript также поддерживает оператор throw . Вы можете использовать оператор throw, чтобы вызвать ваши встроенные исключения или ваши собственные исключения. Позже эти исключения могут быть зафиксированы, и вы можете предпринять соответствующие действия.
пример
В следующем примере демонстрируется использование оператора throw в CoffeeScript. Сохранить этот код в файле с именем throw_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()
Откройте командную строку и скомпилируйте файл .coffee, как показано ниже.
c:\> coffee -c throw_example.coffee
При компиляции он дает вам следующий 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);
Теперь снова откройте командную строку и запустите файл CoffeeScript, как показано ниже.
c:\> coffee throw_example.coffee
При выполнении файл CoffeeScript производит следующий вывод.