CodeGym /Java Course /Frontend SELF EN /Exception Handling

Exception Handling

Frontend SELF EN
Level 36 , Lesson 4
Available

10.1 The try...catch Block

Exception handling is a key aspect of programming that helps improve the resilience and reliability of your code. In JavaScript, the keywords try, catch, finally, and throw are used for exception handling. In this lecture, we'll cover these keywords, their syntax, and some usage examples.

1. The try...catch Block

The try...catch construct is used for handling errors that occur within a try block of code. If an error occurs in the try block, control is passed to the catch block, where the error can be dealt with.

Syntax:

    
      try {
        // Code that may throw an exception
      } catch (error) {
        // Code to handle the exception
      }
    
  

In this example, although division by zero doesn't cause an error in JavaScript, if it were a different error (like accessing an undefined variable), the catch block would handle it:

JavaScript
    
      try {
        let result = 10 / 0;

        console.log(result);

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

10.2. The finally Block

The finally block is used for executing code that must run regardless of whether an exception occurred in the try block or not. The finally block follows the catch block.

Syntax:

    
      try {
        // Code that may throw an exception
      } catch (error) {
        // Code to handle the exception
      } finally {
        // Code that will always execute
      }
    
  

In this example, the message This will always execute. will be printed regardless of whether an error occurred or not:

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. The throw Statement

The throw statement is used to explicitly throw exceptions. You can use it to throw custom errors.

Syntax:

    
      throw expression;
    
  

Where:

  • expression: any expression or object to be thrown as an exception

Example Use

In this example, an error is thrown if you try to divide by zero, and the catch block handles this error:

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 Advanced Examples and Use Cases

Example 1: Multiple Exceptions

Sometimes different types of errors can occur within a try block. You can handle them differently using the properties of the error object.

In this example, we handle a JSON syntax error separately from other possible errors:

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.');
      }
    
  

Example 2: Nested try...catch Blocks

You can use nested try...catch blocks for more fine-grained error handling.

In this example, an error occurring in the first try block is handled by the inner catch block, which then rethrows the error for handling by the outer catch block:

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;
      }
    
  

Example 3: Using finally to Release Resources

The finally block is useful for releasing resources, like closing files or ending network connections.

In this example, the file will always be closed, regardless of whether an error occurred during reading:

JavaScript
    
      function readFile(filePath) {
        let file;
        try {
          file = openFile(filePath); // Function to open the file
          // Work with the file
        } catch (error) {
          console.error('Error reading file:', error.message);
        } finally {
          if (file) {
            closeFile(file); // Function to close the file
          }
          console.log('File processing finished.');
        }
      }

      function openFile(path) {
        // Logic to open the file
      }

      function closeFile(file) {
        // Logic to close the file
      }

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

Exception handling in JavaScript using try, catch, finally, and throw enables you to create more robust and resilient applications. Understanding and effectively using these constructs helps manage errors efficiently, release resources, and enhance user experience.

1
Task
Frontend SELF EN, level 36, lesson 4
Locked
Error Handling
Error Handling
1
Task
Frontend SELF EN, level 36, lesson 4
Locked
Finally block
Finally block
1
Опрос
Objects,  36 уровень,  4 лекция
недоступен
Objects
Objects
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION