⊗jsSpExcThr 145 of 294 menu

Ném ngoại lệ trong JavaScript

Trong các bài học trước, chúng ta đã nghiên cứu hai nơi mà JavaScript ném ra ngoại lệ trong trường hợp có vấn đề nào đó.

Tuy nhiên, trong dự án của bạn, cũng có thể có những tình huống khác mà đối với bạn là ngoại lệ, nhưng đối với JavaScript thì không. Trong trường hợp đó, chúng ta có thể tạo và ném ra các ngoại lệ tùy chỉnh của riêng mình.

Hãy cùng phân tích cú pháp cần thiết cho việc này. Đầu tiên, cần tạo một ngoại lệ bằng lệnh new Error, truyền văn bản ngoại lệ làm tham số:

new Error('văn bản ngoại lệ');

Sau đó, ngoại lệ này cần được ném ra bằng lệnh throw:

throw new Error('văn bản ngoại lệ');

Việc ném một ngoại lệ buộc JavaScript coi rằng đã xảy ra một tình huống đặc biệt. Điều này có nghĩa là ngoại lệ như vậy có thể được bắt bằng cấu trúc try-catch và xử lý theo cách cần thiết.

Hãy cùng xem một ví dụ về cách sử dụng điều này. Giả sử chúng ta có một hàm chia một số cho một số khác:

function div(a, b) { return a / b; }

Chúng ta hãy coi rằng phép chia cho số không là bị cấm và khi cố gắng thực hiện điều đó thì phải xảy ra một tình huống ngoại lệ. Để làm điều này, chúng ta sẽ kiểm tra trong hàm xem có cố gắng chia cho 0 hay không. Nếu không - chúng ta sẽ chia, còn nếu có - chúng ta sẽ ném ra một ngoại lệ:

function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('lỗi chia cho số không'); } }

Trước tiên, chúng ta hãy thử chia cho 0, mà không bắt ngoại lệ:

alert( div(3, 0) );

Trong trường hợp này, việc thực thi script sẽ bị gián đoạn và trong console sẽ xuất hiện lỗi với văn bản 'lỗi chia cho số không' (hãy kiểm tra). Bây giờ chúng ta sẽ bắt lỗi của mình và xử lý nó theo cách nào đó:

try { alert( div(3, 0) ); } catch (error) { alert('bạn đang cố gắng chia cho 0, điều này bị cấm'); }

Trong JavaScript, việc cố gắng lấy căn bậc hai của một số âm không dẫn đến việc ném ra ngoại lệ:

let result = Math.sqrt(-1); console.log(result); // sẽ hiển thị NaN

Hãy viết hàm của riêng bạn để lấy căn bậc hai của một số và đồng thời ném ra ngoại lệ, nếu căn bậc hai được lấy từ một số âm.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối