Ném, và thử ... bắt ... cuối cùng
Câu lệnh try
xác định một khối mã để chạy [để thử].
Câu lệnh catch
xác định một khối mã để xử lý mọi lỗi.
Câu lệnh finally
xác định một khối mã để chạy bất kể kết quả.
Câu lệnh throw
xác định lỗi tùy chỉnh.
Lỗi sẽ xảy ra!
Khi thực hiện mã JavaScript, các lỗi khác nhau có thể xảy ra.
Lỗi có thể là lỗi mã hóa do lập trình viên thực hiện, lỗi do đầu vào sai và những thứ không lường trước khác.
Thí dụ
Trong ví dụ này, chúng tôi đã viết sai chính tả "cảnh báo" là "adddlert" để cố tình tạo ra lỗi:
thử {& nbsp; addDlert ["khách chào mừng!"];} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.message;}
try {
adddlert["Welcome guest!"];
}
catch[err] {
document.getElementById["demo"].innerHTML = err.message;
}
Hãy tự mình thử »
JavaScript bắt AddDlert là một lỗi và thực thi mã bắt để xử lý nó.adddlert as an error, and executes the catch code to handle it.
JavaScript thử và bắt
Câu lệnh try
cho phép bạn xác định một khối mã được kiểm tra các lỗi trong khi nó đang được thực thi.
Câu lệnh catch
cho phép bạn xác định một khối mã được thực thi, nếu xảy ra lỗi trong khối thử.
Các câu lệnh JavaScript try
và catch
có theo cặp:
thử {& nbsp; Khối mã để thử} Catch [err] {& nbsp; Khối mã để xử lý lỗi}
Block
of code to try
}
catch[err] {
Block of code to handle errors
}
JavaScript ném lỗi
Khi xảy ra lỗi, JavaScript thường sẽ dừng và tạo thông báo lỗi.
Thuật ngữ kỹ thuật cho điều này là: JavaScript sẽ ném một ngoại lệ [ném lỗi].throw an exception [throw an error].
JavaScript thực sự sẽ tạo một đối tượng lỗi với hai thuộc tính: tên và tin nhắn.Error object with two properties: name and message.
Tuyên bố ném
Câu lệnh throw
cho phép bạn tạo một lỗi tùy chỉnh.
Về mặt kỹ thuật, bạn có thể ném một ngoại lệ [ném một lỗi].throw an exception [throw an error].
Ngoại lệ có thể là JavaScript String
, catch
0, catch
1 hoặc catch
2:
ném "quá lớn"; & nbsp; & nbsp; & nbsp; // ném một văn bản ném 500; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; // Ném một số
throw 500; // throw a number
Nếu bạn 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 các thông báo lỗi tùy chỉnh.
Ví dụ xác thực đầu vào
Ví dụ này kiểm tra đầu vào. Nếu giá trị sai, một ngoại lệ [ERR] sẽ bị ném.
Ngoại lệ [ERR] bị bắt bởi câu lệnh Catch và thông báo lỗi tùy chỉnh được hiển thị:
thử {& nbsp; addDlert ["khách chào mừng!"];} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.message;}
Hãy tự mình thử »
Test Input
JavaScript bắt AddDlert là một lỗi và thực thi mã bắt để xử lý nó.
function myFunction[] {
const message = document.getElementById["p01"];
message.innerHTML = "";
let x = document.getElementById["demo"].value;
try {
if[x == ""] throw "empty";
if[isNaN[x]] throw "not a number";
x = Number[x];
if[x < 5]
throw "too low";
if[x > 10] throw "too high";
}
catch[err] {
message.innerHTML = "Input is " + err;
}
}
Hãy tự mình thử »
JavaScript bắt AddDlert là một lỗi và thực thi mã bắt để xử lý nó.
JavaScript thử và bắt
Câu lệnh try
cho phép bạn xác định một khối mã được kiểm tra các lỗi trong khi nó đang được thực thi.
thử {& nbsp; addDlert ["khách chào mừng!"];} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.message;}
Hãy tự mình thử »
JavaScript bắt AddDlert là một lỗi và thực thi mã bắt để xử lý nó.
JavaScript thử và bắt
Câu lệnh try
cho phép bạn xác định một khối mã được kiểm tra các lỗi trong khi nó đang được thực thi.
Block of code to try
}
catch[err] {
Block of code to handle errors
}
finally {
Block of code to be executed regardless of the try / catch result
}
Thí dụ
Trong ví dụ này, chúng tôi đã viết sai chính tả "cảnh báo" là "adddlert" để cố tình tạo ra lỗi:
const message = document.getElementById["p01"];
message.innerHTML = "";
let x = document.getElementById["demo"].value;
try {
if[x == ""] throw "is empty";
if[isNaN[x]]
throw "is not a number";
x = Number[x];
if[x > 10] throw "is too high";
if[x < 5] throw "is too low";
}
catch[err] {
message.innerHTML = "Error: " + err + ".";
}
finally {
document.getElementById["demo"].value = "";
}
}
Hãy tự mình thử »
JavaScript bắt AddDlert là một lỗi và thực thi mã bắt để xử lý nó.
JavaScript thử và bắt
Câu lệnh try
cho phép bạn xác định một khối mã được kiểm tra các lỗi trong khi nó đang được thực thi.
Câu lệnh catch
cho phép bạn xác định một khối mã được thực thi, nếu xảy ra lỗi trong khối thử.
JavaScript ném lỗi | Khi xảy ra lỗi, JavaScript thường sẽ dừng và tạo thông báo lỗi. |
Thuật ngữ kỹ thuật cho điều này là: JavaScript sẽ ném một ngoại lệ [ném lỗi]. | JavaScript thực sự sẽ tạo một đối tượng lỗi với hai thuộc tính: tên và tin nhắn. |
Tuyên bố ném
Câu lệnh throw
cho phép bạn tạo một lỗi tùy chỉnh.
JavaScript ném lỗi | Khi xảy ra lỗi, JavaScript thường sẽ dừng và tạo thông báo lỗi. |
Thuật ngữ kỹ thuật cho điều này là: JavaScript sẽ ném một ngoại lệ [ném lỗi]. | JavaScript thực sự sẽ tạo một đối tượng lỗi với hai thuộc tính: tên và tin nhắn. |
Tuyên bố ném | Câu lệnh throw cho phép bạn tạo một lỗi tùy chỉnh. |
Lỗi cú pháp | Đã xảy ra lỗi cú pháp |
Kiểu hàng | Một lỗi đã xảy ra |
Urierror | Một lỗi trong encodeuri [] đã xảy ra |
Sáu giá trị khác nhau được mô tả dưới đây.
Lỗi đánh giá
Một catch
7 chỉ ra một lỗi trong hàm eval [].
Các phiên bản mới hơn của JavaScript không ném Evalerror. Sử dụng cú pháp thay thế.
Lỗi phạm vi
Một catch
8 bị ném nếu bạn sử dụng một số nằm ngoài phạm vi của các giá trị pháp lý.
Ví dụ: bạn không thể đặt số chữ số đáng kể của một số thành 500.
Thí dụ
Đặt Num = 1; thử {& nbsp; num.toprecision [500]; & nbsp; & nbsp; // Một số không thể có 500 chữ số quan trọng} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.Name; }
try {
num.toPrecision[500]; // A number cannot have 500 significant digits
}
catch[err] {
document.getElementById["demo"].innerHTML = err.name;
}
Hãy tự mình thử »
Lỗi tham chiếu
Một catch
9 bị ném nếu bạn sử dụng [tham chiếu] một biến chưa được khai báo:
Thí dụ
Đặt Num = 1; thử {& nbsp; num.toprecision [500]; & nbsp; & nbsp; // Một số không thể có 500 chữ số quan trọng} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.Name; }
try {
x = y + 1;
// y cannot be used [referenced]
}
catch[err] {
document.getElementById["demo"].innerHTML = err.name;
}
Hãy tự mình thử »
Lỗi tham chiếu
Một catch
9 bị ném nếu bạn sử dụng [tham chiếu] một biến chưa được khai báo:
Thí dụ
Đặt Num = 1; thử {& nbsp; num.toprecision [500]; & nbsp; & nbsp; // Một số không thể có 500 chữ số quan trọng} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.Name; }
eval["alert['Hello]"]; // Missing ' will produce an error
}
catch[err]
{
document.getElementById["demo"].innerHTML = err.name;
}
Hãy tự mình thử »
Lỗi tham chiếu
Một catch
9 bị ném nếu bạn sử dụng [tham chiếu] một biến chưa được khai báo:
Thí dụ
Đặt Num = 1; thử {& nbsp; num.toprecision [500]; & nbsp; & nbsp; // Một số không thể có 500 chữ số quan trọng} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.Name; }
try {
num.toUpperCase[]; // You cannot convert a number to upper case
}
catch[err] {
document.getElementById["demo"].innerHTML
= err.name;
}
Hãy tự mình thử »
Lỗi tham chiếu
Một catch
9 bị ném nếu bạn sử dụng [tham chiếu] một biến chưa được khai báo:
Thí dụ
Đặt Num = 1; thử {& nbsp; num.toprecision [500]; & nbsp; & nbsp; // Một số không thể có 500 chữ số quan trọng} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.Name; }
decodeURI["%%%"]; // You cannot URI decode percent signs
}
catch[err] {
document.getElementById["demo"].innerHTML = err.name;
}
Hãy tự mình thử »
Lỗi tham chiếu
Một catch
9 bị ném nếu bạn sử dụng [tham chiếu] một biến chưa được khai báo:
Đặt x = 5; thử {& nbsp; & nbsp; x = y + 1; & nbsp; & nbsp; // y không thể được sử dụng [tham chiếu]} Catch [err] {& nbsp; document.getEuityById ["demo"]. innerHtml = err.Name; }
lineNumber [Mozilla]
columnNumber [Mozilla]
stack [Mozilla]
description [Microsoft]
number [Microsoft]
Lỗi cú pháp
Một finally
0 được ném nếu bạn cố gắng đánh giá mã với lỗi cú pháp.
thử {& nbsp; eval ["alert ['hello]"]; & nbsp; & nbsp; // thiếu 'sẽ tạo ra một lỗi} Catch [err] {& nbsp; & nbsp; document.getEuityById ["demo"]. InnerHtml = err.name;}