Существуют ли какие-либо издержки производительности при создании, создании и отлове исключений в 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) {
}
Это делает код намного более безопасным для непредвиденных сбоев и устраняет больше ошибок. Допустим, у веб-сайта сотни посетителей в час, и этот шаблон дизайна используется практически везде.
Как такой подход к дизайну повлияет на производительность? Преимущества перевешивают стоимость или это просто плохое кодирование?
Спасибо за любую помощь!
UPDATE! Чтобы быть ясным, мое внимание не заключено в обертку NullPointerException, как мог бы предложить мой пример. Цель состоит в том, чтобы заставить исполнителя написать попытку / поймать, сохраняя головную боль реального сбоя, поскольку:
пользователь == ноль
было забыто. Вопрос касается сравнения этих двух моделей дизайна:
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;
}