CodeGym /Khóa học Java /Frontend SELF VI /Xử lý ngoại lệ

Xử lý ngoại lệ

Frontend SELF VI
Mức độ , Bài học
Có sẵn

10.1 Khối try...catch

Xử lý ngoại lệ là một khía cạnh quan trọng trong lập trình, giúp cải thiện độ bền và độ tin cậy của mã. Trong JavaScript để xử lý ngoại lệ, ta sử dụng các từ khóa try, catch, finallythrow. Trong bài giảng này, chúng ta sẽ xem xét các từ khóa này, cú pháp và ví dụ sử dụng.

1. Khối try...catch

Cấu trúc try...catch được sử dụng để xử lý lỗi xảy ra trong khối mã try. Nếu có lỗi xảy ra trong khối try, điều khiển sẽ chuyển đến khối catch, nơi lỗi có thể được xử lý.

Cú pháp:

    
      try {
        // Mã có thể gây ra ngoại lệ
      } catch (error) {
        // Mã để xử lý ngoại lệ
      }
    
  

Trong ví dụ này, mặc dù chia cho không không gây ra lỗi trong JavaScript, nếu đó là một lỗi khác (ví dụ truy cập biến không xác định), khối catch sẽ xử lý nó:

JavaScript
    
      try {
        let result = 10 / 0;

        console.log(result);

      } catch (error) {
        console.error('An error occurred:', error);
      }
    
  

10.2. Khối finally

Khối finally được sử dụng để thực thi mã, mã sẽ được thực thi bất kể ngoại lệ có xảy ra trong khối try hay không. Khối finally đi sau khối catch.

Cú pháp:

    
      try {
        // Mã có thể gây ra ngoại lệ
      } catch (error) {
        // Mã để xử lý ngoại lệ
      } finally {
        // Mã sẽ luôn được thực thi
      }
    
  

Trong ví dụ này, thông điệp This will always execute. sẽ được in ra bất kể lỗi có xảy ra hay không:

JavaScript
    
      try {
        let result = 10 / 0;
        console.log(result);
      } catch (error) {
        console.error('An error occurred:', error);
      } finally {
        console.log('This will always execute.');
      }
    
  

10. 3. Toán tử throw

Toán tử throw được sử dụng để ném ra ngoại lệ một cách rõ ràng. Với nó, ta có thể ném ra lỗi tuỳ chỉnh.

Cú pháp:

    
      throw expression;
    
  

Trong đó:

  • expression: bất kỳ biểu thức hoặc đối tượng nào sẽ được ném ra như một ngoại lệ

Ví dụ sử dụng

Trong ví dụ này, một lỗi được ném ra nếu cố chia cho không, và khối catch xử lý lỗi này:

JavaScript
    
      function divide(a, b) {
        if (b === 0) {
          throw new Error('Division by zero is not allowed.');
        }
        return a / b;
      }

      try {
        let result = divide(10, 0);
        console.log(result);
      } catch (error) {
        console.error('An error occurred:', error.message);
      }
    
  

10.4 Ví dụ nâng cao và sử dụng

Ví dụ 1: Nhiều ngoại lệ

Đôi khi trong khối try có thể xảy ra nhiều loại lỗi khác nhau. Bạn có thể xử lý chúng khác nhau, sử dụng thuộc tính của đối tượng lỗi.

Trong ví dụ này, chúng ta xử lý lỗi cú pháp JSON tách biệt với các lỗi khác có thể xảy ra:

JavaScript
    
      try {
        JSON.parse('{ malformed JSON string }');
      } catch (error) {
        if (error instanceof SyntaxError) {
          console.error('JSON Syntax Error:', error.message);
        } else {
          console.error('Unexpected Error:', error);
        }
      } finally {
        console.log('Parsing attempt finished.');
      }
    
  

Ví dụ 2: Khối try...catch lồng nhau

Bạn có thể sử dụng các khối try...catch lồng nhau để xử lý lỗi chi tiết hơn.

Trong ví dụ này, lỗi xảy ra trong khối try đầu tiên được xử lý bởi khối catch bên trong, sau đó sẽ ném lại lỗi để xử lý bởi khối catch bên ngoài:

JavaScript
    
      try {
        try {
          let result = divide(10, 0);
          console.log(result);
        } catch (innerError) {
          console.error('Inner catch:', innerError.message);
          throw innerError;
        }
      } catch (outerError) {
        console.error('Outer catch:', outerError.message);
      } finally {
        console.log('Nested try...catch finished.');
      }

      function divide(a, b) {
        if (b === 0) {
          throw new Error('Division by zero is not allowed.');
        }
        return a / b;
      }
    
  

Ví dụ 3: Sử dụng finally để giải phóng tài nguyên

Khối finally hữu ích để giải phóng tài nguyên, như đóng file hoặc hoàn tất kết nối mạng.

Trong ví dụ này, file sẽ luôn đóng, bất kể lỗi xảy ra trong quá trình đọc hay không:

JavaScript
    
      function readFile(filePath) {
        let file;
        try {
          file = openFile(filePath); // Hàm mở file
          // Làm việc với file
        } catch (error) {
          console.error('Error reading file:', error.message);
        } finally {
          if (file) {
            closeFile(file); // Hàm đóng file
          }
          console.log('File processing finished.');
        }
      }

      function openFile(path) {
        // Logic mở file
      }

      function closeFile(file) {
        // Logic đóng file
      }

      readFile('path/to/file.txt');
    
  

Xử lý ngoại lệ trong JavaScript sử dụng try, catch, finallythrow giúp tạo ra các ứng dụng đáng tin cậy và bền vững hơn. Hiểu và sử dụng đúng các cấu trúc này giúp quản lý hiệu quả lỗi, giải phóng tài nguyên và cải thiện trải nghiệm người dùng.

1
Опрос
Đối tượng,  36 уровень,  4 лекция
недоступен
Đối tượng
Đối tượng
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION