Код: Выделить всё
throw new Exception("Exception message");Код: Выделить всё
throw new Exception("Exception message");
Видимо, он успел просканировать мозг топикпастера и сразу дал ему более удачное решение его проблемы. Надеюсь у Lighter в коде нет ни чего воде такого:[syntax=java5]if(e.getMessage() == CONSTANT1) {Mikhail_dev писал(а):Артем, а в чем отличие? В любом случае строку передавать в конструктор.
Код: Выделить всё
private void method(int a, int b) {
if(a < 0) {
throw new NegativeFirstArgumetException();
} else if(b < 0) {
throw new NegativeSecondArgemtException();
}
}По мне, лучше сделать так и не париться:Lighter писал(а):altwin, предлагаете для каждого случая своё исключение?А если серьёзно, то если сообщение нужно только записать в лог, то на мой взгляд, не обязательно для него создавать свой класс.Код: Выделить всё
private void method(int a, int b) { if(a < 0) { throw new NegativeFirstArgumetException(); } else if(b < 0) { throw new NegativeSecondArgemtException(); } }
Код: Выделить всё
private void method(int a, int b) {
if(a < 0)
throw new IllegalArgumentException("value 'a' must be positive.");
if(b < 0)
throw new IllegalArgumentException("value 'b' must be positive.");
}тестирование или тестируемость кода выростает в разы... Ну и как бы строку передавать не обязательно, можно передавать внутренний код, даже объект если конструктор расширить и т.д., ограничение - только наша фантазия.Mikhail_dev писал(а):Артем, а в чем отличие? В любом случае строку передавать в конструктор.
интересно, почему в java вам не предлогают вывод сообщений в лог из строк или констант бросая везде простой Exception, а вы представьте что все стало именно так..? Зачем было написанно такое колличество исключений? Что это дает при разработке ПО на java? Вот ровно тоже самое это и даст вам. Варрианты типо у меня маленькое приложение - не катят. Нужно делать правильно всегда. А возможность бросать простой exception для того и дана - нельзя предусмотреть всего, но мы ведь стремимся к совершенству ?Lighter писал(а):altwin, предлагаете для каждого случая своё исключение?
конечно, при условии, что это действительно IllegalArgumentException... А вот кидать exception не соответсвующий реальной ошибке - это "плохо пахнет"... И тогда уж точно лучше бросить стандартный Exception, чем вводить в заблуждение пользователя(пользователя кода, читателя и т.д.).KamiSempai писал(а): А если серьёзно, то если сообщение нужно только записать в лог, то на мой взгляд, не обязательно для него создавать свой класс.По мне, лучше сделать так и не париться:Код: Выделить всё
private void method(int a, int b) { if(a < 0) throw new IllegalArgumentException("value 'a' must be positive."); if(b < 0) throw new IllegalArgumentException("value 'b' must be positive."); }
опять же - согласен и так возможно, но автор топика бросал не IllegalArgumentException, т.е. у него exception не стандартный и это введет в заблуждение(видела реакцию того, кто получает в ответ к примеру на "возвращен не тот объект" IllegalArgumentException ?Foenix писал(а):если уж вообще обощать,
я бы обрабатывала exception вне метода, и написала бы ему throws E...
private void method(int a, int b) throws IllegalArgumentException{
лялля
}

Все очень просто. Если информация будет предоставлена пользователю, то в ресурсах. Если данная информация для разработчика, то хоть на кидайском пишите её в коде.вопрос был не в исключениях, а как хранить строки
Ну собственно я как и говорил даю соответсвующие имена исключению, если нужна запись в лог, то:Lighter писал(а):Понятно, что кидать Exception или RunimeException - плохо, но мы немного отошли от темы, вопрос был не в исключениях, а как хранить строки
