Exception Handling in Apex: try, catch, finally, throw Keywords

In programming, exceptions are unexpected events that occur during the execution of a program. These exceptions may interrupt the normal flow of the application, which is why handling them effectively is essential. Just like in Java, Apex also provides an exception handling mechanism to catch and manage these errors gracefully. In this tutorial, we’ll go through the core keywords for exception handling in Apex: try, catch, finally, and throw. These keywords allow you to catch, manage, and handle exceptions smoothly.


try Keyword

The try keyword is used to wrap a block of code where an exception might occur. By enclosing potentially problematic code within a try block, you can handle any errors that arise without crashing the application.

Example:

try {
    // Your code here
} catch (ListException e) {
    // List Exception handling code here
}

In this example, any code inside the try block will be executed, and if a ListException occurs, it will be handled by the catch block. If no exception occurs, the catch block is skipped.


catch Keyword

The catch keyword is used to handle specific types of exceptions. Each catch block specifies a particular type of exception, and only that exception type will trigger it. You can use multiple catch blocks to handle different exception types separately.

Example:

try {
    // Your code here
} catch (ListException e) {
    // List Exception handling code here
}

In this example, the catch block specifically handles ListException. If any other type of exception occurs in the try block, it won’t be caught by this catch block. This targeted handling is useful when you want to perform different actions depending on the type of exception encountered.


finally Keyword

The finally block is used to define code that will always execute, regardless of whether an exception was thrown or not. This is particularly useful for clean-up operations, such as closing resources or releasing memory.

Example:

try {
    // Your code here
} catch (ListException e) {
    // List Exception handling code
} finally {
    // Code in this block will execute with or without an exception
}

In this example, whether or not an exception occurs, the finally block will run after the try and catch blocks. This guarantees that clean-up actions will be performed, ensuring resource integrity and reliability of your code.


throw Keyword

The throw keyword is used to explicitly throw an exception. By using throw, you can signal that an error has occurred, even if there isn’t a natural exception raised by the system. This is useful when your application detects an unexpected condition that requires immediate attention.

Example:

public class MyException extends Exception {}

public class MyPO implements PO {
    public void doWork() {
        try {
            Integer i;
            if (i < 5)
                throw new MyException();
        } catch (MyException e) {
            // Your MyException handling code here
        }
    }
}

In this example, a custom exception MyException is defined and then thrown under specific conditions in the doWork method. When throw new MyException() is executed, control transfers to the catch block where the exception is handled. This explicit control over exceptions allows developers to create custom error handling logic suited to the application’s requirements.


Summary

Using try, catch, finally, and throw keywords, you can manage errors in Apex effectively. Here’s a quick recap:

  • try: Wraps code where an exception may occur.
  • catch: Handles specific exceptions, allowing for targeted error management.
  • finally: Executes after try and catch blocks, regardless of whether an exception occurred.
  • throw: Explicitly triggers an exception, allowing custom error conditions.

By mastering these keywords, you’ll be able to build more resilient Apex code that gracefully handles errors, ensuring a smoother and more reliable user experience.