Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2013, 18:28   #1
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
Радость Кто должен выбрасывать Excaption?

Здравствуйте. Что считается делать правильным? Позволять JVM выбрасывать исключения или выбрасывать самому исключения, если это возможно?


Например есть метод который достает элемент из массива по индексу.

Код:
public class Test {

int [] t;

public int getElement(int index) 
{
     return t[index];
     // если  индекс выйдет за пределы массива то тогда JVM сама выдаст исключение.
}
}
или можно так

Код:
public class Test {

int [] t;

public int getElement(int index) 
{
     if (index >= 0 && index<t.size()){
     return t[index];
    }else {
    throw new NullPointerException();
   }
}
}
здесь мы сами проверяли правильность индекса, и в противном случае выбросили исключение.

Так как лучше?
WizarD.89 вне форума Ответить с цитированием
Старый 09.05.2013, 19:59   #2
codekick
Пользователь
 
Аватар для codekick
 
Регистрация: 15.01.2010
Сообщений: 28
Восклицание

Выбрасывать тот же самый exception, что и JVM в данной ситуации, смысла нет.
Можно создать свой exception соответсвующий контексту метода.
Что то вроде NoSuchElementException.
Программирование JavaEE/JavaSE
Платформы: Windows, Linux.
ICQ: 415253529; Skype: codekick;
codekick вне форума Ответить с цитированием
Старый 12.05.2013, 15:20   #3
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Зависит от реализации.

В частном конкретном случае не нужно. Свое исключение нужно, если может нарушиться целостность данных, но этого не произойдет, потому что оно само появится при выходе за пределы массива.

Есть правда еще один вариант: ваш класс - часть какой-то системы со своим подмножеством исключений и тогда под этот случай есть смысл создать свое исключение, унаследованное от вашего базового исключения, которое очевидно должно быть в данном случае. Это еще нужно и потому что если вы вдруг замените контейнер, то изменится и множество выбрасываемых исключений (например, ArrayIndexOutOfBounds для массива и IndexOutOfBounds для списка). Т.е. протокол (частью которого является множество исключений) у вас будет меняться в зависимости от конкретной реализации, что нарушает один из принципов SOLID.
Carbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Каким должен быть код? pufystyj Свободное общение 5 15.08.2012 01:29
Синоптик должен измерить 6y6JIuK Помощь студентам 3 04.02.2010 20:08
Как должен выглядеть код? spimeading Помощь студентам 1 16.12.2009 02:40
Что должен знать программист? Maximxak Свободное общение 37 26.05.2009 22:41