Understanding Exception Handling in Apex

Understanding Exception Handling in Apex

On June 14, 2024, Posted by , In Salesforce Apex Tutorial, With Comments Off on Understanding Exception Handling in Apex
Exception Handling in Salesforce Apex
Exception Handling in Salesforce Apex

Table of Contents

Exception handling in Apex is like having a safety net for your code. It allows your program to deal with unexpected situations, also known as exceptions or errors, in a controlled and graceful way. Think of it as a backup plan that ensures your code doesn’t crash when something goes wrong.

What Are Exceptions?

Imagine you’re driving a car, and suddenly you encounter a roadblock or a flat tire. These unexpected situations can disrupt your journey. Similarly, in programming, exceptions are unexpected events that disrupt the normal flow of your code. They can occur due to various reasons, such as invalid input, network problems, or unexpected data.

How Apex Handles Exceptions

In Apex, you can use exception handling to anticipate and manage these unexpected events. The primary components of exception handling are:

  1. Try: This is where you wrap the code that might cause an exception. It’s like telling your code, “Hey, I’m trying to do something risky here, so be prepared.”
  2. Catch: If an exception occurs within the “try” block, the “catch” block is like a safety net that catches the exception and handles it gracefully. It’s where you specify what action to take when something goes wrong.
  3. Throw: Sometimes, you might want to intentionally raise an exception to signal a problem. This is where you “throw” an exception in your code.

Preparing for your next Salesforce interview? Check out these essential Salesforce interview questions and answers to give you an edge.

History of Try Catch

The concept of the try-catch block, integral to modern error handling in programming, has its roots in exception handling mechanisms that began to develop in the late 1960s and early 1970s. Here’s a brief overview of its history:

Prepare for your next interview with our Top 15 Interview Questions on Reports and Dashboards in Salesforce. Ace your interview with confidence!

Early Developments

The origins of structured error handling can be traced back to older languages like PL/I, developed by IBM in the 1960s. PL/I included a sophisticated error-handling model that was an early form of exception handling, although it did not use try-catch syntax.

Influence of Ada

The try-catch model as we know it today was heavily influenced by the Ada programming language, designed by Jean Ichbiah and his team in the 1970s. Ada was developed under a contract with the United States Department of Defense and included robust exception handling as part of its design. Ada’s approach to exception handling was to separate the normal flow of control from error processing, which is a principle carried forward in try-catch blocks.

Read more: String methods in Salesforce apex

Popularization in C++

The try-catch syntax was popularized by C++, developed by Bjarne Stroustrup starting in the early 1980s. C++ introduced this syntax to handle exceptions in a structured way, allowing programmers to enclose blocks of code that might throw an exception within a try block, and to handle these exceptions in one or more catch blocks.

Read more: Loops in Salesforce Apex

Adoption in Other Languages

Following its implementation in C++, the try-catch structure was adopted by many other programming languages. Java, developed in the mid-1990s by Sun Microsystems, adopted try-catch as a core part of its exception handling, emphasizing reliable error management as a key feature of the language. Similarly, languages like C#, developed by Microsoft in the early 2000s, and many other modern languages have incorporated try-catch blocks into their syntax to handle exceptions cleanly and efficiently.

Read more: Methods – Salesforce Apex

Modern Usage

Today, try-catch blocks are a fundamental aspect of exception handling in many programming languages, providing a clear and structured way to deal with errors that occur during program execution. This method not only improves the reliability of the code but also makes it easier to read and maintain by separating error handling from the main logic of the program.

The development of the try-catch block reflects the evolution of programming languages towards more robust and error-resilient systems, highlighting the industry’s ongoing commitment to improving software reliability and maintainability.

Read more: Classes – Salesforce Apex

Here’s a simple example in Apex:

try {
    Integer result = 10 / 0; // This will cause a division by zero exception.
} catch (Exception e) {
    System.debug('An error occurred: ' + e.getMessage());

In this code, we’re trying to divide 10 by 0, which is not allowed in mathematics and will cause an exception. The “catch” block then catches the exception and prints an error message, preventing the code from crashing.

Why Exception Handling Matters

Exception handling is crucial because it ensures the reliability and stability of your code. Without it, a single error could bring your entire program to a halt. With proper exception handling, you can gracefully handle errors, log them for debugging, and continue executing the rest of your code.

Whether you’re dealing with user input, external data sources, or complex calculations, knowing how to use exception handling effectively in Apex is essential for building robust and reliable applications. It’s like having a safety mechanism that keeps your code running smoothly, even when unexpected bumps in the road occur.

Read more: Objects – Salesforce Apex

Types of exceptions salesforce apex

In Salesforce Apex, exceptions are used to handle errors that occur during program execution. Apex supports built-in exceptions, and developers can also create custom exceptions. These exceptions help in managing and responding to errors appropriately, ensuring the application behaves predictively even under erroneous conditions. Below, I’ll outline the main types of built-in exceptions in Apex, along with code snippets that demonstrate how to handle them.

Common Types of Built-In Exceptions in Apex


Occurs when a DML operation (insert, update, delete, etc.) fails.

try {
    Account a = new Account(Name='Test Account');
    insert a; // Assume this fails
} catch (DmlException e) {
    System.debug('An error occurred: ' + e.getMessage());

Read more: SOQL in Salesforce


Triggered when there is an issue with a SOQL query, such as a malformed query or a query that returns more results than the limit.

try {
    Account a = [SELECT Id FROM Account WHERE Name='Nonexistent'];
} catch (QueryException e) {
    System.debug('Query error: ' + e.getMessage());


Occurs when attempting to access a null object or its attributes.

try {
    Account a = null;
    System.debug('Account Name: ' + a.Name);
} catch (NullPointerException e) {
    System.debug('Null pointer exception: ' + e.getMessage());

Read more: Database methods in Salesforce Apex


Happens when the Apex code exceeds a governor limit.

try {
    for (int i = 0; i < 100000; i++) {
        Account a = new Account(Name='Account' + i);
        insert a; // This will cause a limit exception
} catch (LimitException e) {
    System.debug('Limit exceeded: ' + e.getMessage());

Readmore: SOSL Query in Salesforce Apex


Triggered when there are problems with list operations, like accessing an index out of bounds.

try {
    List<Account> accounts = new List<Account>();
    System.debug('Access non-existent index: ' + accounts[1].Name);
} catch (ListException e) {
    System.debug('List exception: ' + e.getMessage());

Readmore: Record Types in Salesforce

Custom Exceptions

In addition to handling built-in exceptions, Apex allows developers to define their own custom exceptions. This is useful for creating specific error messages tailored to the business logic of the application.

public class MyCustomException extends Exception {}

try {
    throw new MyCustomException('Custom Error Message');
} catch (MyCustomException e) {
    System.debug('Caught custom exception: ' + e.getMessage());

Using these exception handling mechanisms, Apex developers can make their applications more robust and user-friendly by providing clear feedback when errors occur and ensuring that the application can gracefully recover from unexpected issues.

Readmore: Validation Rules in Salesforce

CRS Info Solutions offers a comprehensive Salesforce training program designed to enhance your skills and career opportunities. With experienced instructors and a well-structured curriculum, CRS Info Solutions is dedicated to your success in the Salesforce ecosystem through our Career Advancement program. Explore our Salesforce training in Hyderabad to gain practical, hands-on experience.

Our training encompasses all vital aspects of Salesforce, ensuring thorough learning. Whether you’re a novice or looking to elevate your expertise, they provide the guidance and resources required. Sign up for a free demo today!

Comments are closed.