Customize error responses¶

Effective error handling is important for building user-friendly AI applications. BentoML facilitates this by allowing you to customize error handling logic for a Service.

This document describes how to define a custom exception class and error handling logic in a BentoML Service.

Custom exception class¶

To define a custom exception, inherit from BentoMLException or one of its subclasses, such as InvalidArgument in the example below.

Note

BentoML reserves error codes 401, 403, and any above 500. Avoid using these in custom exceptions.

import bentoml
from bentoml.exceptions import InvalidArgument, BentoMLException
from http import HTTPStatus

# Define a custom exception for method not allowed errors
class MyCustomException(BentoMLException):
    error_code = HTTPStatus.METHOD_NOT_ALLOWED

# Define a simple custom exception for invalid argument errors
class MyCustomInvalidArgsException(InvalidArgument):
    pass


@bentoml.service
class MyService:

    @bentoml.api
    def test1(self, text: str) -> str:
        # Raise the custom method not allowed exception
        raise MyCustomException("This is a custom error message.")

    @bentoml.api
    def test2(self, text: str) -> str:
        # Raise the custom invalid argument exception
        raise MyCustomInvalidArgsException("This is a custom error message.")

For more information, see exception APIs.