คำสั่ง try/catch/finally ใน JavaScript

การกำหนดและการใช้งาน

คำสั่ง try/catch/finally จัดการข้อผิดพลาดที่อาจเกิดขึ้นบางส่วนหรือทั้งหมดในบล็อครหัส ขณะที่ยังคงทำงานรหัสต่อไป

ข้อผิดพลาดอาจเกิดจากความผิดพลาดในการเขียนรหัสโดยโปรแกรมเมอร์ ข้อผิดพลาดจากการเข้าข้อมูลที่ผิด และสถานการณ์ที่ยังไม่รู้สึกว่าจะเกิดขึ้น

คำสั่ง try อนุญาตให้คุณเขียนบล็อครหัสที่ต้องการทดสอบข้อผิดพลาดในการทำงาน

ถ้ามีข้อผิดพลาดในบล็อค try คำสั่ง catch อนุญาตให้คุณกำหนดบล็อคโค้ดที่ต้องทำงาน

คำสั่ง finally อนุญาตให้ทำงานบล็อคโค้ดหลัง try และ catch โดยไม่มีความเกี่ยวข้องกับผลลัพธ์

หมายเหตุ:คำสั่ง catch และ finally ทั้งสองเป็นที่เลือกตั้ง แต่ต้องใช้หนึ่งในสองคำสั่งนี้เมื่อใช้คำสั่ง try และไม่จำเป็นต้องใช้ทั้งสองครั้ง

คำแนะนำ:เมื่อมีข้อผิดพลาดเกิดขึ้น JavaScript มักจะหยุดงานและสร้างข้อความข้อผิดพลาด ใช้คำสั่ง throw เพื่อสร้างข้อผิดพลาดที่กำหนดโดยตัวเอง (ทิ้งอุปสรรค์) ถ้าใช้ throw ร่วมกับ try และ catch สามารถควบคุมกระแสการทำงานและสร้างข้อความข้อผิดพลาดที่กำหนดโดยตัวเอง

สำหรับความรู้เกี่ยวกับข้อผิดพลาดของ JavaScript โปรดเรียนหลักสูตรข้อผิดพลาดของ JavaScript

實例

ในตัวอย่างนี้ เราทำให้ผิดพลาดในการพิมพ์ตัวอักษรในโค้ด (ในบล็อค try)

ตัวอย่างนี้ควรแสดง "Welcome guest!" แต่มีความผิดพลาดในการพิมพ์ alert

บล็อค catch จะจับข้อผิดพลาด และปฎิบัติการบล็อคโค้ดที่จัดการมัน

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
try {
  adddlert("Welcome guest!");
}
catch(err) {
  document.getElementById("demo").innerHTML = err.message;
}
</script>
</body>
</html>

亲自試一試

มีตัวอย่าง TIY มากมายที่ด้านล่างของหน้า

ภาษาสyntax

try {
  tryCode - บล็อคโค้ดที่ต้องทดสอบ
}
catch(err) {
  catchCode - บล็อคโค้ดที่จะจัดการข้อผิดพลาด
} 
finally {
  finallyCode - บล็อคโค้ดที่ต้องทำงานไม่ว่าจะมีข้อผิดพลาดใน try / catch หรือไม่
}

ค่าตัวแปร

ตัวแปร คำอธิบาย
tryCode จำเป็น ในขณะที่ปฎิบัติงานต้องทดสอบบล็อคโค้ดที่มีข้อผิดพลาด
err จำเป็น ถ้าใช้ร่วมกับ catch ระบุตัวแปรที่อ้างอิงข้อผิดพลาดท้องถิ่น ตัวแปรนี้สามารถอ้างอิง Error Object (มีข้อมูลเกี่ยวกับข้อผิดพลาดที่เกิดขึ้น เช่น ข้อความ 'addlert' is not defined') ถ้าข้อผิดพลาดเกิดขึ้นจาก throw คำสั่ง ตัวแปรนี้จะหมายถึงอ็เจกที่กำหนดโดย throw คำสั่ง (ดู 'ตัวอย่างเพิ่มเติม')
catchCode เลือกตั้ง。ถ้ามีข้อผิดพลาดในบล็อค try จะปฎิบัติการบล็อคโค้ดนี้ ถ้าไม่มีข้อผิดพลาด บล็อคโค้ดนี้จะไม่ถูกปฎิบัติงาน
finallyCode เลือกตั้ง。ต้องปฎิบัติการบล็อคโค้ดที่เป็นที่เลือกให้ทำงานไม่ว่าจะมีข้อผิดพลาดใน try / catch หรือไม่

รายละเอียดเทคนิค

JavaScript 版本: ECMAScript 3

更多實例

實例

本例檢查輸入。如果值是錯的,則拋出異常 (err)。

catch 语句捕獲異常 (err) 並顯示自定義錯誤消息:

<!DOCTYPE html>
<html>
<body>
<p>Please input a number between 5 and 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</button>
<p id="message"></p>
<script>
function myFunction() {
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "is Empty";
    if(isNaN(x)) throw "not a number";
    if(x > 10) throw "too high";
    if(x < 5) throw "too low";
  }
  catch(err) {
    message.innerHTML = "Input " + err;
  }
}
</script>
</body>
</html>

亲自試一試

實例

finally 语句讓你在 try 和 catch 之後執行代碼,而不管結果如何:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Empty";
    if(isNaN(x)) throw "Not a number";
    if(x > 10) throw "Too high";
    if(x < 5) throw "Too low";
  }
  catch(err) {
    message.innerHTML = "Error: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

亲自試一試

浏览器支持

语句 Chrome IE Firefox Safari Opera
try/catch/finally การสนับสนุน การสนับสนุน การสนับสนุน การสนับสนุน การสนับสนุน

หน้าที่เกี่ยวข้อง

คู่มือ JavaScript:ข้อผิดพลาด JavaScript

คู่มือ JavaScript:JavaScript การประกาศ throw