Trong hướng dẫn này, bạn sẽ tìm hiểu về câu lệnh try… catch… last để xử lý các ngoại lệ trong JavaScript với sự trợ giúp của các ví dụ.
Các try
, catch
và finally
khối được sử dụng để xử lý các trường hợp ngoại lệ (một loại lỗi). Trước khi tìm hiểu về chúng, bạn cần biết về các loại lỗi trong lập trình.
Các loại lỗi
Trong lập trình, có thể có hai loại lỗi trong mã:
Lỗi cú pháp : Lỗi cú pháp. Ví dụ, nếu bạn viết consol.log('your result');
, chương trình trên ném ra một lỗi cú pháp. Chính tả của console
là một lỗi trong đoạn mã trên.
Lỗi thời gian chạy : Loại lỗi này xảy ra trong quá trình thực thi chương trình. Ví dụ:
gọi một hàm hoặc một biến không hợp lệ.
Những lỗi này xảy ra trong thời gian chạy được gọi là ngoại lệ . Bây giờ, hãy xem cách bạn có thể xử lý những ngoại lệ này.
JavaScript try… Câu lệnh bắt
Câu try… catch
lệnh được sử dụng để xử lý các ngoại lệ. Cú pháp của nó là:
try ( // body of try ) catch(error) ( // body of catch )
Mã chính nằm bên trong try
khối. Trong khi thực thi try
khối, nếu có lỗi xảy ra, nó sẽ chuyển đến catch
khối. Các catch
khối xử lý các sai sót theo những điều khoản bắt.
Nếu không có lỗi xảy ra, mã bên trong try
khối được thực thi và catch
khối sẽ bị bỏ qua.
Ví dụ 1: Hiển thị biến không khai báo
// program to show try… catch in a program const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); // forgot to define variable a console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); )
Đầu ra
NaN Đã xảy ra lỗi Thông báo lỗi: ReferenceError: a không được xác định
Trong chương trình trên, một biến không được định nghĩa. Khi bạn cố gắng in một biến, chương trình sẽ xuất hiện một lỗi. Lỗi đó được mắc trong catch
khối.
JavaScript try… catch… last Statement
Bạn cũng có thể sử dụng try… catch… finally
câu lệnh để xử lý các ngoại lệ. Các finally
khối thực hiện cả khi mã chạy thành công hoặc nếu một lỗi xảy ra.
Cú pháp của try… catch… finally
khối là:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Ví dụ 2: thử… bắt… cuối cùng Ví dụ
const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); ) finally ( console.log('Finally will execute every time'); )
Đầu ra
NaN Đã gặp lỗi Thông báo lỗi: ReferenceError: a không được xác định Cuối cùng sẽ thực thi mọi lúc
Trong chương trình trên, một lỗi xảy ra và lỗi đó bị chặn bởi catch
khối. Các finally
khối sẽ thực hiện trong mọi tình huống (nếu chương trình chạy thành công hoặc nếu một lỗi xảy ra).
Lưu ý : Bạn cần sử dụng catch
hoặc finally
câu lệnh sau try
câu lệnh. Nếu không, chương trình sẽ báo lỗi Uncaught SyntaxError: Thiếu bắt hoặc cuối cùng sau khi thử.
Hãy thử JavaScript… bắt trong setTimeout
Các try… catch
sẽ không nắm bắt được ngoại lệ nếu nó xảy ra trong " đúng lúc " mã, giống như trong setTimeout (). Ví dụ,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Ở trên try… catch
sẽ không hoạt động vì engine đã rời khỏi try… catch
cấu trúc và hàm được thực thi sau đó.
Các try… catch
khối phải được bên trong hàm đó để bắt một ngoại lệ bên trong một hàm theo thời gian. Ví dụ,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Bạn cũng có thể sử dụng throw
câu lệnh với try… catch
câu lệnh để sử dụng các ngoại lệ do người dùng xác định. Ví dụ, một số nhất định được chia cho 0 . Nếu bạn muốn coi Infinity
là một lỗi trong chương trình, thì bạn có thể ném một ngoại lệ do người dùng xác định bằng cách sử dụng throw
câu lệnh để xử lý điều kiện đó.
Bạn sẽ tìm hiểu về Câu lệnh ném JavaScript trong phần hướng dẫn tiếp theo.