- CoffeeScript 教程
- CoffeeScript - 首页
- CoffeeScript - 概述
- CoffeeScript - 环境
- CoffeeScript - 命令行工具
- CoffeeScript - 语法
- CoffeeScript - 数据类型
- CoffeeScript - 变量
- CoffeeScript - 运算符和别名
- CoffeeScript - 条件语句
- CoffeeScript - 循环
- CoffeeScript - 推导式
- CoffeeScript - 函数
- CoffeeScript 面向对象
- CoffeeScript - 字符串
- CoffeeScript - 数组
- CoffeeScript - 对象
- CoffeeScript - 范围
- CoffeeScript - 展开运算符
- CoffeeScript - 日期
- CoffeeScript - 数学
- CoffeeScript - 异常处理
- CoffeeScript - 正则表达式
- CoffeeScript - 类和继承
- CoffeeScript 高级
- CoffeeScript - Ajax
- CoffeeScript - jQuery
- CoffeeScript - MongoDB
- CoffeeScript - SQLite
- CoffeeScript 有用资源
- CoffeeScript - 快速指南
- CoffeeScript - 有用资源
- CoffeeScript - 讨论
CoffeeScript - 异常处理
异常(或异常事件)是在程序执行期间出现的错误。当发生异常时,程序的正常流程会被中断,程序/应用程序会异常终止,这并不推荐,因此需要处理这些异常。
异常可能由于许多不同的原因发生。以下是一些发生异常的情况。
- 用户输入了无效数据。
- 需要打开的文件找不到。
CoffeeScript 中的异常
CoffeeScript 使用**try catch finally**块支持异常/错误处理。这些块的功能与 JavaScript 中相同,**try**块包含异常语句,**catch**块包含发生异常时要执行的操作,**finally**块用于无条件执行语句。
以下是 CoffeeScript 中**try catch**和**finally**块的语法。
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 后无条件执行。
示例
以下示例演示了如何在 CoffeeScript 中使用 try 和 catch 块进行异常处理。在这里,我们尝试在 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 块
我们也可以使用**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
throw 语句
CoffeeScript 也支持**throw**语句。您可以使用 throw 语句抛出内置异常或自定义异常。稍后可以捕获这些异常,并采取相应的操作。
示例
以下示例演示了如何在 CoffeeScript 中使用**throw**语句。将此代码保存到名为**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 文件会生成以下输出。
Divided by zero error.