CoffeeScript - การจัดการข้อยกเว้น

ข้อยกเว้น (หรือเหตุการณ์พิเศษ) คือปัญหาที่เกิดขึ้นระหว่างการทำงานของโปรแกรม เมื่อมีข้อยกเว้นเกิดขึ้นโฟลว์ปกติของโปรแกรมจะหยุดชะงักและโปรแกรม / แอปพลิเคชันหยุดทำงานอย่างผิดปกติซึ่งไม่แนะนำดังนั้นจึงต้องจัดการข้อยกเว้นเหล่านี้

ข้อยกเว้นอาจเกิดขึ้นได้จากหลายสาเหตุ นี่คือบางสถานการณ์ที่เกิดข้อยกเว้น

  • ผู้ใช้ป้อนข้อมูลที่ไม่ถูกต้อง
  • ไม่พบไฟล์ที่ต้องเปิด

ข้อยกเว้นใน CoffeeScript

CoffeeScripts รองรับการจัดการข้อยกเว้น / ข้อผิดพลาดโดยใช้ไฟล์ try catch and 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 and 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

เปิด command prompt และรวบรวมไฟล์. 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);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ 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"

เปิด command prompt และรวบรวมไฟล์. 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);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ 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()

เปิด command prompt และรวบรวมไฟล์. 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);

ตอนนี้เปิดไฟล์ command prompt อีกครั้งและเรียกใช้ไฟล์ CoffeeScript ดังที่แสดงด้านล่าง

c:\> coffee throw_example.coffee

ในการดำเนินการไฟล์ CoffeeScript จะสร้างเอาต์พุตต่อไปนี้

Divided by zero error.