Cùng tìm hiểu về Các ngoại lệ trong JavaScript. Bạn sẽ biết các loại ngoại lệ (Exception) trong JavaScrip và cách xử lý chúng trong bài học này.
Các ngoại lệ trong JavaScript
Trong JavaScript có tất cả 8 loại ngoại lệ (Exception) như bảng sau đây:
Tên ngoại lệ | ý nghĩa |
---|---|
Error | Lỗi thông thường |
EvalError | Lỗi từ hàm eval() |
InternalError | Lỗi nội bộ JavaScript |
RangeError | Lỗi chỉ định giá trị nằm ngoài phạm vi |
ReferenceError | Lỗi tham chiếu thất bại |
SyntaxError | Lỗi cú pháp JavaScript |
TypeError | Lỗi sai kiểu dữ liệu |
URIError | Lỗi từ hàm encodeURI() hoặc decodeURI() |
Ví dụ với phương thức toString() của Number Object, chúng ta chỉ có thể chỉ định đối số có giá trị từ 2 đến 36 mà thôi. Nếu như chỉ định một giá trị nằm ngoài phạm vi này, lỗi RangeError sẽ bị trả về:
let num = 10; |
Lại nữa, có thể có nhiều loại ngoại lệ khác nhau được trả về từ cùng một xử lý. Ví dụ với phương thức toFixed() của Number Object, chúng ta chỉ có thể chỉ định đối số có giá trị từ 0 đến 100, và lỗi RangeError sẽ trả về nếu chỉ định một giá trị nằm ngoài phạm vi. Tuy nhiên đồng thời thì chúng ta cũng chỉ có thể chỉ định kiểu sổ đối với phương thức này, do đó nếu chỉ định một kiểu ngoài kiểu số thì lỗi TypeError sẽ trả về. Và tất nhiên nếu viết sai cú pháp, lỗi SyntaxError cũng sẽ được trả về.
let num = 3.14; |
Để bắt và xử lý các ngoại lệ này, chúng ta sử dụng tới lệnh try catch mà Kiyoshi đã hướng dẫn trong bài try…catch trong JavaScript. Tuy nhiên chúng ta còn có thể thực hiện các xử lý khác nhau tuỳ thuộc vào loại ngoại lệ đã xảy ra.
Xử lý tuỳ theo loại ngoại lệ trong JavaScript
Với cú pháp try…catch thông thường, tất cả các loại ngoại lệ đều được xử lý một cách giống nhau bằng các xử lý được mô tả trong khối catch, như ví dụ sau đây:
function returnFixed(num, digits){ |
Với ví dụ này, bất kể ngoại lệ xảy ra thuộc kiểu nào thì nó cũng đều được in ra nội dung như sau:
Start |
Tuy nhiên chúng ta cũng có thể viết các xử lý tuỳ thuộc vào loại ngoại lệ xảy ra với cú pháp sau đây:
try{
//Các câu lệnh cần chạy
・・・
} catch(e) {
//Các xử lý khi chạy code trên bị lỗi
・・・
}
try{
//Các câu lệnh cần chạy
・・・
} catch(e) {
if (e instanceof RangeError){
// Các xử lý khi lỗi RangeError trả về
・・・
} else if (e instanceof TypeError){
// Các xử lý khi lỗi TypeError trả về
・・・
} else {
// Các xử lý khi các ngoại lệ khác trả về
・・・
}
}
Ví dụ, chúng ta bắt và xử lý cho từng ngoại lệ trả về trong ví dụ trên như sau:
function returnFixed(num, digits){ |
Với ví dụ này, từng kiểu ngoại lệ trả về sẽ được phân biệt và thực thi các xử lý tương ứng với nó, và trả về kết quả như sau:
Start |
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về các ngoại lệ trong JavaScript và cách xử lý tương ứng rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.
URL Link
HOME › học javascript - lập trình javascript cơ bản>>09. xử lý ngoại lệ trong javascript