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 catchfinally 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 ecatchkhố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ụngtrycatchcá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 sautrycatch. 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.