JavaScript try ... catch ... last Statement

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, catchfinallykhố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 consolelà 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… catchlệ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 trykhối. Trong khi thực thi trykhối, nếu có lỗi xảy ra, nó sẽ chuyển đến catchkhối. Các catchkhố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 trykhối được thực thi và catchkhố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 catchkhối.

JavaScript try… catch… last Statement

Bạn cũng có thể sử dụng try… catch… finallycâu lệnh để xử lý các ngoại lệ. Các finallykhố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… finallykhố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 catchkhối. Các finallykhố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 catchhoặc finallycâu lệnh sau trycâ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… catchsẽ 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… catchsẽ không hoạt động vì engine đã rời khỏi try… catchcấu trúc và hàm được thực thi sau đó.

Các try… catchkhố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 throwcâu lệnh với try… catchcâ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 Infinitylà 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 throwcâ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.

thú vị bài viết...