TypeScript Exception Handling with Custom Error Handling

In TypeScript, exception handling involves using try, catch, and finally blocks. The try block contains the code that might throw an exception, while the catch block handles the exception, providing an opportunity to log or handle errors. The finally block ensures that code within it executes regardless of whether an exception occurs.

Let us delve into a practical approach to understanding TypeScript Exception Handling.

1. What is TypeScript?

TypeScript is a popular open-source programming language developed by Microsoft. It is a superset of JavaScript, adding optional static typing to the dynamic language. This means developers can write safer and more maintainable code by specifying data types for variables, function parameters, and return values. TypeScript code is compiled into plain JavaScript, ensuring compatibility with all JavaScript environments. It enhances productivity by providing features like type checking, interfaces, and advanced tooling for large-scale applications. TypeScript also supports modern ECMAScript features and can be used for both front-end and back-end development, making it a versatile choice for building robust and scalable web applications.

1.1 Exception Handling in TypeScript

Exception handling in TypeScript is a mechanism to gracefully manage and respond to runtime errors or exceptional conditions that may occur during program execution. TypeScript provides constructs similar to those in JavaScript for handling exceptions:

  • try: The try block encloses the code that may throw an exception.
  • catch: The catch block follows a try block and contains code to handle and respond to the exception. It specifies the type of exception that it can catch.
  • finally: The finally block, if present, is executed regardless of whether an exception is thrown or not. It is commonly used for cleanup operations.

The throw statement in TypeScript is used to manually throw exceptions. TypeScript supports specifying the type of exception that can be caught, which enhances type safety during development.

Proper exception handling improves code robustness by allowing developers to respond to unexpected situations, log errors, and ensure a more predictable program flow.

2. Basic Exception Handling in TypeScript

In TypeScript, basic exception handling involves using the try, catch, and optionally, finally blocks. Here’s a simple example:

Code Example 1

function divide(a: number, b: number): number {
    try {
        if (b === 0) {
            throw new Error("Cannot divide by zero");
        return a / b;
    } catch (error) {
        console.error("Error: " + error.message);
        return 0; // Default value or another appropriate response
    } finally {
        console.log("Division operation completed");

// Example usage
const result1 = divide(10, 2); // Result: 5
const result2 = divide(8, 0); // Outputs an error message and returns 0

In this example:

  • The try block contains the code that might throw an exception. If the divisor (b) is zero, it explicitly throws a new Error with a message.
  • The catch block catches the exception, logs an error message, and provides a default value (0 in this case).
  • The finally block contains code that always executes, whether an exception occurs or not. It’s useful for cleanup or actions that must occur regardless of errors.

3. Throwing and Handling Custom Exceptions

In TypeScript, you can throw and handle custom exceptions by creating classes that extend the built-in Error class. Here’s an example:

Code Example 1

class CustomError extends Error {
    constructor(message: string) {
        super(message); = "CustomError";

function exampleFunction() {
    // Simulate an error condition
    throw new CustomError("This is a custom error");

try {
} catch (error) {
    if (error instanceof CustomError) {
        console.error(`Caught a custom error: ${error.message}`);
    } else {
        console.error("Unexpected error type");

In this example:

  • CustomError is a custom exception class that extends the built-in Error class. It sets the name property to uniquely identify the custom error type.
  • exampleFunction simulates an error condition by throwing an instance of CustomError.
  • The try block contains the code that might throw an exception.
  • The catch block handles the exception. It checks if the caught error is an instance of CustomError and then logs or handles it accordingly.

By using custom exception classes, you can create more specific and meaningful error types, making it easier to identify and handle different types of errors in your code. This also promotes better code organization and maintenance.

4. Conclusion

In conclusion, exception handling in TypeScript is a vital aspect of writing robust and reliable code. By employing the try, catch, and finally blocks, developers can gracefully manage runtime errors and exceptional conditions, enhancing the overall stability of their applications. TypeScript allows the creation and handling of custom exceptions by extending the Error class, enabling developers to define specific error types for more meaningful and targeted error handling. This practice not only facilitates the identification and resolution of issues but also promotes better code organization and maintenance. Effectively managing exceptions contributes to the creation of resilient and maintainable TypeScript applications.


An experience full-stack engineer well versed with Core Java, Spring/Springboot, MVC, Security, AOP, Frontend (Angular & React), and cloud technologies (such as AWS, GCP, Jenkins, Docker, K8).
Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Inline Feedbacks
View all comments
Back to top button