Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Ném lại lỗi (re-throw) trong JavaScript


Sau khi catch bắt lỗi, có thể ném lại (re-throw) bằng throw err để truyền lỗi lên cấp cao hơn. Thường dùng khi muốn log lỗi, xử lý một phần rồi để code khác xử lý tiếp.

Ví dụ

Nhập số. Nếu < 40 -> xử lý lỗi. Nếu > 40 -> ném lại lỗi:

<!DOCTYPE html>
<html lang="vi">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Re-throw lỗi JS</title>
  <style>
    body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
    .result { font-size: 18px; font-weight: 500; color: rebeccapurple; }
  </style>
</head>
<body>
  <h1>Ném lại lỗi (re-throw) trong JavaScript</h1>
  <input type="number" class="num" placeholder="Nhập số" />
  <button class="Btn">KIỂM TRA</button>
  <div class="result"></div>
  <h3>Nhập số > 40 để thấy re-throw lỗi</h3>
  <script>
    const btn = document.querySelector(".Btn");
    const resEle = document.querySelector(".result");
    btn.addEventListener("click", () => {
      const a = document.querySelector(".num").value;
      try {
        throw a; // ném giá trị nhập
      } catch (err) {
        resEle.innerHTML = `Lỗi ném: ${err}<br>`;
        if (a < 40) {
          resEle.innerHTML += "Đã xử lý: Giá trị < 40";
        } else {
          resEle.innerHTML += "Giá trị > 40 -> ném lại lỗi";
          throw err; // re-throw
        }
      }
    });
  </script>
</body>
</html>

Kết quả

  • Nhập < 40: hiển thị "Đã xử lý".
  • Nhập > 40: hiển thị "ném lại lỗi" và lỗi xuất hiện trên console (uncaught).

Lưu ý: Re-throw giữ nguyên stack trace gốc (nếu ném đúng đối tượng err).