Производительность затрат на кодирование «разработки на основе исключений» в Java?

Существуют ли какие-либо затраты на производительность, создавая, выбрасывая и перехватывая исключения в Java?

Я планирую добавить «разработку на основе исключений» в более крупный проект. Я хотел бы спроектировать свои собственные исключения и включить их в свои методы, заставляя разработчиков ловить и выполнять соответствующую работу.

Например, если у вас есть способ получить пользователя из базы данных на основе имени.

public User getUser(String name);

Однако, возможно, что пользователь может быть нулевым, и часто забывают проверить это перед использованием публичного метода пользователя.

User user = getUser("adam");

int age = user.getAge();

что приведет к NullPointerException и аварийному завершению. Однако, если я сделал проверку, перед возвратом пользовательского объекта, если он нулевой, и выдал 'UserIsNullException':

public User getUser(String name) throws UserIsNullException;

Я заставляю разработчика думать и действовать

try {

    User user = getUser("adam");

    int age = user.getAge();

}catch( UserIsNullException e) {

}

Это делает код намного более безопасным для непредвиденных сбоев и устраняет больше ошибок. Допустим, у сайта сотни посетителей в час, и этот шаблон дизайна используется практически везде.

Как такой дизайнерский подход повлияет на производительность? Преимущества перевешивают стоимость или это просто плохое кодирование?

Спасибо за любую помощь!

ОБНОВИТЬ! Чтобы было ясно, мое внимание не заключено в обертку NullPointerException, как мог бы предложить мой пример. Цель состоит в том, чтобы заставить разработчика написать try / catch, сохраняя головную боль от реального сбоя, поскольку:

пользователь == ноль

был забыт. Вопрос касается сравнения этих двух моделей проектирования:

int age;

try {

User user = getUser("adam");

age = user.getAge();

}catch( UserIsNullException e) {

age = 0;

}

против:

int age;

User user = getUser("adam");

if( user != null ) {
age = user.getAge();
} else {
age = 0;
}

Ответы на вопрос(14)

Ваш ответ на вопрос