Câu lệnh try/catch/finally trong JavaScript

Định nghĩa và cách sử dụng

Câu lệnh try/catch/finally xử lý phần hoặc toàn bộ lỗi có thể xảy ra trong khối mã, đồng thời vẫn thực thi mã.

Lỗi có thể do lỗi mã viết bởi nhà phát triển, lỗi đầu vào không chính xác gây ra lỗi và các tình huống không thể dự đoán trước khác.

Câu lệnh try cho phép bạn định nghĩa khối mã cần kiểm tra lỗi khi thực thi.

Nếu xảy ra lỗi trong khối try, câu lệnh catch cho phép bạn định nghĩa khối mã cần thực hiện.

Câu lệnh finally cho phép bạn thực hiện mã sau try và catch, bất kể kết quả là gì.

Ghi chú:Cả câu lệnh catch và finally đều là tùy chọn, nhưng cần sử dụng một trong số chúng khi sử dụng câu lệnh try (nếu không phải cùng lúc).

Lưu ý:Khi xảy ra lỗi, JavaScript thường dừng lại và tạo thông báo lỗi. Sử dụng lệnh throw để tạo lỗi tùy chỉnh (ném ngoại lệ). Nếu sử dụng throw cùng với try và catch, bạn có thể kiểm soát luồng chương trình và tạo thông báo lỗi tùy chỉnh.

Để biết thêm về lỗi JavaScript, hãy học bài học về lỗi JavaScript.

Mẫu

Trong ví dụ này, chúng ta đã đánh dấu sai chữ trong mã của mình (trong khối try).

Ví dụ này nên hiển thị "Welcome guest!", nhưng có lỗi về chính tả của alert.

Khối catch sẽ bắt lỗi và thực hiện mã để xử lý nó:

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

thử trực tiếp

Có thêm nhiều ví dụ TIY dưới cùng của trang.

Cú pháp

try {
  tryCode - Khối mã cần thử
}
catch(err) {
  catchCode - Khối mã để xử lý lỗi
} 
finally {
  finallyCode - Khối mã cần thực hiện không phụ thuộc vào kết quả của try / catch
}

Giá trị tham số

Tham số Mô tả
tryCode Bắt buộc. Khối mã cần kiểm tra lỗi khi thực thi.
err Bắt buộc, nếu sử dụng cùng với catch. Định nghĩa biến cục bộ tham chiếu lỗi. Biến này có thể tham chiếu đến đối tượng Error (chứa thông tin về lỗi đã xảy ra, chẳng hạn như thông điệp "'addlert' is not defined"). Nếu lỗi được tạo bởi lệnh throw, biến này tham chiếu đến đối tượng được chỉ định trong lệnh throw (xin xem thêm "Các ví dụ khác").
catchCode Tùy chọn. Nếu xảy ra lỗi trong khối try, cần thực hiện khối mã. Nếu không xảy ra lỗi, khối mã này sẽ không bao giờ được thực hiện.
finallyCode Tùy chọn. Mặc dù kết quả của try / catch là gì, nhưng vẫn cần thực hiện khối mã.

Chi tiết kỹ thuật

Phiên bản JavaScript:} ECMAScript 3

Ví dụ thêm

Mẫu

Ví dụ này kiểm tra đầu vào. Nếu giá trị là sai, thì ném ngoại lệ (err).

câu lệnh catch bắt giữ ngoại lệ (err) và hiển thị thông báo lỗi tùy chỉnh:

<!DOCTYPE html>
<html>
<body>
<p>Bitte geben Sie eine Zahl zwischen 5 und 10 ein:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Kiểm tra Nhập liệu</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 "Trống";
    if(isNaN(x)) throw "Không phải số";
    if(x > 10) throw "Quá cao";
    if(x < 5) throw "Quá thấp";
  }
  catch(err) {
    message.innerHTML = "Nhập " + err;
  }
}
</script>
</body>
</html>

thử trực tiếp

Mẫu

câu lệnh finally cho phép bạn thực hiện mã sau khi try và catch, bất kể kết quả như thế nào:

function myFunction()
  var message, x;
  message = document.getElementById("message");
  message.innerHTML = "";
  x = document.getElementById("demo").value;
  try { 
    if(x == "") throw "Trống";
    if(isNaN(x)) throw "Không phải số";
    if(x > 10) throw "Quá cao";
    if(x < 5) throw "Quá thấp";
  }
  catch(err) {
    message.innerHTML = "Lỗi: " + err + ".";
  }
  finally {
    document.getElementById("demo").value = "";
  }
}

thử trực tiếp

trình duyệt hỗ trợ

câu lệnh Chrome IE Firefox Safari Opera
try/catch/finally Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ Hỗ trợ

Trang liên quan

Giáo trình JavaScript:Lỗi JavaScript

Tài liệu tham khảo JavaScript:Câu lệnh throw của JavaScript