⊗jsSpExcPrb 150 of 294 menu

Ném ngoại lệ trong JavaScript

Hãy xem xét khối catch của nhiệm vụ với JSON sản phẩm:

catch (error) { if (error.name == 'SyntaxError') { alert('JSON sản phẩm không hợp lệ'); } else if (error.name == 'ProductCostError') { alert('Sản phẩm thiếu giá hoặc số lượng'); } }

Như bạn thấy, chúng ta bắt hai ngoại lệ mà chúng ta đã lên kế hoạch và phản ứng nào đó với chúng. Nhưng điều gì sẽ xảy ra nếu một ngoại lệ khác loại không được chúng ta dự tính xảy ra? Trong trường hợp này, nó cũng sẽ rơi vào khối catch, nhưng sẽ không có phản ứng nào cả, vì ngoại lệ với loại khác sẽ không rơi vào bất kỳ câu lệnh if nào của chúng ta.

Khi tôi nói rằng sẽ không có phản ứng nào, ý tôi là thực sự không có gì: thậm chí sẽ không có lỗi nào được in ra console. Mã của chúng ta sẽ đơn giản không hoạt động trong im lặng.

Do đó, có quy tắc sau: mã của bạn chỉ nên bắt những ngoại lệ mà nó biết cách xử lý. Nếu ngoại lệ không được biết, thì cần phải ném nó tiếp bằng throw. Trong trường hợp này, phía trên nó sẽ được bắt bởi ai đó hiểu biết hơn hoặc ngoại lệ sẽ được in ra dưới dạng lỗi trong console.

Hãy sửa mã của chúng ta:

catch (error) { if (error.name == 'SyntaxError') { alert('JSON sản phẩm không hợp lệ'); } else if (error.name == 'ProductCostError') { alert('Sản phẩm thiếu giá hoặc số lượng'); } else { throw error; // ném ngoại lệ đi xa hơn } }

Cho đoạn mã sau:

try { let arr = JSON.parse(json); for (let i = 0; i < arr.length; i++) { localStorage.setItem(i, arr[i]); } } catch (error) { if (error.name == 'QuotaExceededError') { alert('hết dung lượng lưu trữ'); } if (error.name == 'SyntaxError') { alert('JSON không hợp lệ'); } }

Có gì không ổn với mã này? Hãy sửa nó thành một phiên bản tốt hơn.

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