CoffeeScript - Xử lý Ngoại lệ
Một ngoại lệ (hoặc sự kiện đặc biệt) là một vấn đề phát sinh trong quá trình thực hiện một chương trình. Khi một Ngoại lệ xảy ra, quy trình bình thường của chương trình bị gián đoạn và chương trình / Ứng dụng kết thúc bất thường, điều này không được khuyến nghị, do đó những ngoại lệ này phải được xử lý.
Một ngoại lệ có thể xảy ra vì nhiều lý do khác nhau. Dưới đây là một số trường hợp xảy ra ngoại lệ.
- Một người dùng đã nhập dữ liệu không hợp lệ.
- Không thể tìm thấy tệp cần mở.
Ngoại lệ trong CoffeeScript
CoffeeScripts hỗ trợ xử lý ngoại lệ / lỗi bằng cách sử dụng try catch and finallycác khối. Các chức năng của các khối này giống như trong JavaScript,try khối chứa các câu lệnh đặc biệt, catch khối có hành động được thực hiện khi một ngoại lệ xảy ra và finally khối được sử dụng để thực hiện các câu lệnh một cách vô điều kiện.
Sau đây là các cú pháp của try catch và finally khối trong 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
Các try khối phải được theo sau bởi chính xác một catch khối hoặc một finallykhối (hoặc một trong cả hai). Khi một ngoại lệ xảy ra trongtry khối, ngoại lệ được đặt trong e và catchkhối được thực thi. Tùy chọnfinally khối thực thi vô điều kiện sau khi thử / bắt.
Thí dụ
Ví dụ sau minh họa việc xử lý Ngoại lệ bằng cách sử dụng các khối try và catch trong CoffeeScript. Ở đây, chúng tôi đang cố gắng sử dụng một biểu tượng không xác định trong hoạt động CoffeeScript và chúng tôi đã xử lý lỗi xảy ra bằng cách sử dụngtry và catchcác khối. Lưu mã này trong một tệp có tênException_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
Mở command prompt và biên dịch tệp .coffee như hình dưới đây.
c:\> coffee -c Exception_handling.coffee
Khi biên dịch, nó cung cấp cho bạn JavaScript sau.
// 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);
Bây giờ, hãy mở command prompt một lần nữa và chạy tệp CoffeeScript như hình dưới đây.
c:\> coffee Exception_handling.coffee
Khi thực thi, tệp CoffeeScript tạo ra kết quả sau.
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
Khối cuối cùng
Chúng ta cũng có thể viết lại ví dụ trên bằng cách sử dụng finallykhối. Nếu chúng tôi làm như vậy, nội dung của khối này sẽ được thực thi vô điều kiện sautry và catch. Lưu mã này trong một tệp có tênException_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"
Mở command prompt và biên dịch tệp .coffee như hình dưới đây.
c:\> coffee -c Exception_handling_finally.coffee
Khi biên dịch, nó cung cấp cho bạn JavaScript sau.
// 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);
Bây giờ, hãy mở command prompt một lần nữa và chạy tệp CoffeeScript như hình dưới đây.
c:\> coffee Exception_handling_finally.coffee
Khi thực thi, tệp CoffeeScript tạo ra kết quả sau.
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
Tuyên bố ném
CoffeeScript cũng hỗ trợ throwtuyên bố. Bạn có thể sử dụng câu lệnh ném để nâng cao các ngoại lệ nội trang hoặc các ngoại lệ tùy chỉnh của bạn. Sau đó, những ngoại lệ này có thể được ghi lại và bạn có thể thực hiện một hành động thích hợp.
Thí dụ
Ví dụ sau minh họa việc sử dụng throwtrong CoffeeScript. Lưu mã này trong một tệp có tênthrow_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()
Mở command prompt và biên dịch tệp .coffee như hình dưới đây.
c:\> coffee -c throw_example.coffee
Khi biên dịch, nó cung cấp cho bạn JavaScript sau.
// 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);
Bây giờ, hãy mở command prompt một lần nữa và chạy tệp CoffeeScript như hình dưới đây.
c:\> coffee throw_example.coffee
Khi thực thi, tệp CoffeeScript tạo ra kết quả sau.
Divided by zero error.