tek4

Câu lệnh throw trong JavaScript

by - September. 26, 2021
Kiến thức
Học
<p><img class="aligncenter wp-image-8162 size-full" src="https://tek4.vn/wp-content/uploads/2021/02/Capture-40.png" alt="C&acirc;u lệnh throw trong JavaScript" width="749" height="442" /></p> <p>Trong b&agrave;i viết n&agrave;y, ta sẽ t&igrave;m hiểu về c&aacute;c c&acirc;u lệnh throw trong JavaScript c&ugrave;ng với sự trợ gi&uacute;p của c&aacute;c v&iacute; dụ dẫn chứng.</p> <p>Trong b&agrave;i viết trước, ta đ&atilde; t&igrave;m hiểu về c&aacute;ch xử l&yacute; c&aacute;c ngoại lệ bằng c&aacute;ch sử dụng khối lệnh try..catch trong JavaScript. C&acirc;u lệnh try&hellip;catch xử l&yacute; c&aacute;c ngoại lệ theo c&aacute;ch ti&ecirc;u chuẩn được cung cấp bởi JavaScript. Tuy nhi&ecirc;n, ta c&oacute; thể sử dụng c&acirc;u lệnh throw để đưa ra c&aacute;c ngoại lệ do người d&ugrave;ng định nghĩa. C&aacute;c bạn c&oacute; thể xem lại b&agrave;i viết về khối lệnh try...catch...finally để xử l&yacute; ngoại lệ trong JavaScript tại đ&acirc;y.</p> <h1>C&acirc;u lệnh throw trong JavaScript</h1> <p>Trong JavaScript, c&acirc;u lệnh <code class="EnlighterJSRAW" data-enlighter-language="generic">throw</code>được sử dụng để xử l&yacute; c&aacute;c ngoại lệ do người d&ugrave;ng định nghĩa.</p> <p>V&iacute; dụ, một số n&agrave;o đ&oacute; được chia bởi gi&aacute; trị 0. Nếu ta muốn coi gi&aacute; trị Infinity l&agrave; một lỗi trong chương tr&igrave;nh, th&igrave; ta c&oacute; thể n&eacute;m một ngoại lệ do người d&ugrave;ng định nghĩa bằng c&aacute;ch sử dụng c&acirc;u lệnh throw để xử l&yacute; ngoại lệ đ&oacute;.</p> <p><em>C&uacute; ph&aacute;p của c&acirc;u lệnh throw:</em></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic">throw biểu thức;</pre> <p>Ở đ&acirc;y, biểu thức chỉ định gi&aacute; trị của ngoại lệ.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">throw 5 / 0;</pre> <p><strong><span style="background-color: #ffff00;">Ch&uacute; &yacute;: Biểu thức c&oacute; thể l&agrave; chuỗi k&yacute; tự, gi&aacute; trị kiểu boolean, kiểu dữ liệu số hoặc kiểu đối tượng.</span></strong></p> <h2>C&acirc;u lệnh throw được sử dụng với khối lệnh try&hellip;catch</h2> <p><em>C&uacute; ph&aacute;p:</em></p> <pre class="EnlighterJSRAW" data-enlighter-language="generic">try { &nbsp;&nbsp;&nbsp; //Đoạn m&atilde; 1 &nbsp;&nbsp;&nbsp; throw ngoại lệ; } catch(e) { &nbsp;&nbsp;&nbsp; //Đoạn m&atilde; 2 }</pre> <p><strong><span style="background-color: #ffff00;">Ch&uacute; &yacute;: Khi c&acirc;u lệnh throw được thực thi, n&oacute; sẽ tho&aacute;t ra khỏi khối v&agrave; đi đến khối catch. V&agrave; đoạn m&atilde; b&ecirc;n dưới c&acirc;u lệnh throw sẽ kh&ocirc;ng được thực thi.</span></strong></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = 12; let b = 0; try { &nbsp;&nbsp;&nbsp; console.log(a / b); &nbsp;&nbsp;&nbsp; if(b === 0) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Error('Ph&eacute;p chia cho gi&aacute; trị l&agrave; 0'); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; console.log('ABC'); } catch(e) { &nbsp;&nbsp;&nbsp; console.log('Lỗi xảy ra: ' + e);&nbsp; }</pre> <p>Trong chương tr&igrave;nh tr&ecirc;n, một điều kiện được kiểm tra. Nếu số bị chia l&agrave; gi&aacute; trị 0, một lỗi sẽ được đưa ra. V&agrave; lỗi đ&oacute; được đưa ra bằng c&aacute;ch sử dụng c&acirc;u lệnh throw.</p> <p><strong><span style="background-color: #ffff00;">Ch&uacute; &yacute;: Ta cũng c&oacute; thể sử dụng c&aacute;c h&agrave;m tạo lỗi t&iacute;ch hợp kh&aacute;c cho c&aacute;c lỗi chuẩn như: TypeError, SyntaxError, ReferenceError, EvalError, InternalError v&agrave; RangeError.</span></strong></p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">throw new ReferenceError('Lỗi tham chiếu');</pre> <p>Ta c&oacute; thể sử dụng c&acirc;u lệnh throw b&ecirc;n trong khối catch để đưa ra lại một ngoại lệ.</p> <p>V&iacute; dụ:</p> <pre class="EnlighterJSRAW" data-enlighter-language="js">let a = 100; let b = 0; try { &nbsp;&nbsp;&nbsp; console.log(a/b); &nbsp;&nbsp;&nbsp; throw new Error('Lỗi'); } catch(e) { &nbsp;&nbsp;&nbsp; if(b===0) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw new Error('Lỗi xảy ra'); &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp;&nbsp; else { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log("Đ&atilde; giải quyết xong ngoại lệ"); &nbsp;&nbsp;&nbsp; } }</pre> <p>Kết quả:</p> <pre>Infinity Error: Lỗi xảy ra</pre> <p>Trong chương tr&igrave;nh tr&ecirc;n, c&acirc;u lệnh throw được sử dụng trong khối try để bắt một ngoại lệ. V&agrave; c&acirc;u lệnh throw được viết lại trong khối catch, được thực thi nếu khối catch kh&ocirc;ng thể xử l&yacute; ngoại lệ.</p> <p>Ở đ&acirc;y, c&acirc;u lệnh throw đ&atilde; được sử dụng lại. Nếu lỗi kh&ocirc;ng được xử l&yacute; bởi khối catch, c&acirc;u lệnh throw sẽ được sử dụng lại c&ugrave;ng với th&ocirc;ng b&aacute;o lỗi.</p> <p>Tr&ecirc;n đ&acirc;y l&agrave; kh&aacute;i niệm v&agrave; v&iacute; dụ cơ bản về c&acirc;u lệnh throw trong JavaScript. Hy vọng mọi người c&oacute; thể &aacute;p dụng v&agrave;o trong chương tr&igrave;nh của m&igrave;nh. Mọi người h&atilde;y tiếp tục theo d&otilde;i c&aacute;c b&agrave;i tiếp theo v&agrave; cập nhật c&aacute;c b&agrave;i tiếp theo về lập tr&igrave;nh JavaScript tr&ecirc;n <a href="http://tek4.vn">tek4</a> nh&eacute;!</p> <p>P/s: Cảm ơn mọi người đ&atilde; tin tưởng tek4!</p>