Re[13]: Какие вы видите проблемы в данном коде?
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 17.05.07 13:31
Оценка:
Здравствуйте, Donz, Вы писали:

D>Тогда таким образом можно трактовать любое исключение. Ну не вовремя ява-машина запустилась: сервер сгорел или у пользователя настроение плохое

D>IOException — даже само название класса исключения говорит о том, что произошла ошибка ввода/вывода, то есть надо смотреть в сторону работы с потоками.
D>IllegalStateException — ява-машина не готова запустить какой-либо метод или выполнить операцию из-за состояния самой ява-машины, а не внешнего состояния, как это уже сказал Blazkowicz

Да, ок, согласен, что IOException точнее указывает на то, что произошла ошибка i/o, чем ISE.
Я ж человек ленивый, предпочитаю использовать стандартное и готовое. Но! Есть вариант, поражающий своей точностью — заводим свой unchecked CantWriteToFileException, и кидаем его в этом случае. IOException просто отдыжает
http://denis-zhdanov.blogspot.com
Re[12]: Какие вы видите проблемы в данном коде?
От: aka50 Россия  
Дата: 17.05.07 13:56
Оценка:
Здравствуйте, bolshik, Вы писали:

B>Здравствуйте, aka50, Вы писали:



A>>В случае с Runnable видно: выше никого нет (разве что Thread.UncaughtExceptionHandler), а в случае с Callable интерфейс явно говорит, что ошибка будет обработана (хотя бы в виде ExecutionExeception).


B>Имхо то, что у call стоит throws Exception значит не то, что 'ошибка будет обработана', а то, что код, работающий с этим интерфейсом, должен писать обработчик Exception.

Что в общем-то одно и то же — принуждение к обработке. try { } catch( Exception ignore) {} — это тоже своего рода обработка.

A>>Я, если честно, не в восторге от подхода spring-а к тотальному отказу от checked. Но с другой стороны spring обычно используется для объединения компонент.

B>Ну, скажем, DataAccessException используется для объединения с субд.
Это и есть иллюстрация подхода "it depends" и правила "unchecked — это критическое событие". Т.к. доступ к бд — это отдельный модуль (который еще может помимо прочего еще и прозрачно ексепшины преобразовывать). При этом DataAccessException вполне сочетается с критическим событием и как минимум сессию в web приложении полюбому грохать... При этом при ошибке sql no records found, лучше наверное возвращать пустой список или null, чем швыряться unchecked. В случае с writeFile решение о том, фатально это или нет должен принять внешний код, и чтобы не было у него сурпризов в виде uchecked их лучше сделать checked.
B>По такой логике джавадок вообще вредная вещь, потому что порождает проблемы с актуальностью?
Да, т.к. это примерно то же самое, что сделать все методы Object, а уже внутри проверять. Реальные типы описывать в javadoc. Зато пользователю будет удобно можно пихать в метод что угодно...

К стати, как вариант можно делать два метода, writeAndForget() и writeData() throws IOException
Re[13]: Какие вы видите проблемы в данном коде?
От: aka50 Россия  
Дата: 17.05.07 13:58
Оценка:
Здравствуйте, aka50, Вы писали:

A>Да, т.к. это примерно то же самое, что сделать все методы Object, а уже внутри проверять. Реальные типы описывать в javadoc. Зато пользователю будет удобно можно пихать в метод что угодно...


Имел ввиду параметры методов типа doIt(Object param1, Object param2)
Re[14]: Какие вы видите проблемы в данном коде?
От: Donz Россия http://donz-ru.livejournal.com
Дата: 17.05.07 14:31
Оценка: +1
Здравствуйте, bolshik, Вы писали:

B>Я ж человек ленивый, предпочитаю использовать стандартное и готовое. Но! Есть вариант, поражающий своей точностью — заводим свой unchecked CantWriteToFileException, и кидаем его в этом случае. IOException просто отдыжает


Ну в общем, я предпочитаю кинутые VM исключения сохранять приблизительно такими, какие они есть, а не создавать исключение другого класса.
К тому же, ты сам сказал выше:

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

checked исключение в интерфейсе можно зафиксировать в отличие от unchecked. Уповать на хороший жавадок и то, что пользователь твоей библиотеки будет вдумчиво его читать, всё же не стоит.
Re[13]: Какие вы видите проблемы в данном коде?
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 17.05.07 15:19
Оценка:
Здравствуйте, aka50, Вы писали:

A>...


Поскольку имхо мы уже чутка зацикливаемся, официально заявляю, что твоя точка зрения мне понятна
Не могу с уверенностью сказать, что понятно объяснил свою
Подход к использованию checked/unchecked, при котором checked не используются, а unchecked корректно описываются в контракте метода, мне нравится больше.
Засим предлагаю завершить
http://denis-zhdanov.blogspot.com
Re[15]: Какие вы видите проблемы в данном коде?
От: bolshik Россия http://denis-zhdanov.blogspot.com/
Дата: 17.05.07 15:23
Оценка:
Здравствуйте, Donz, Вы писали:

D>Ну в общем, я предпочитаю кинутые VM исключения сохранять приблизительно такими, какие они есть, а не создавать исключение другого класса.


Это здорово, вот если бы только исключения VM были unchecked...


D>К тому же, ты сам сказал выше:


D>

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

D>checked исключение в интерфейсе можно зафиксировать в отличие от unchecked.

Что значит '... в отличие от unchecked'? Кто-то запещает объявить в интерфейсе метод с деклацацией unchecked эксепшна во throws?


D>Уповать на хороший жавадок и то, что пользователь твоей библиотеки будет вдумчиво его читать, всё же не стоит.


Равно как и на то, что пользователь не будет делать catch (Exception ignore) {}
http://denis-zhdanov.blogspot.com
Re[14]: Какие вы видите проблемы в данном коде?
От: aka50 Россия  
Дата: 17.05.07 16:47
Оценка:
Здравствуйте, bolshik, Вы писали:

B>Засим предлагаю завершить

Re[16]: Какие вы видите проблемы в данном коде?
От: Donz Россия http://donz-ru.livejournal.com
Дата: 18.05.07 09:24
Оценка: :)
Здравствуйте, bolshik, Вы писали:

B>Что значит '... в отличие от unchecked'? Кто-то запещает объявить в интерфейсе метод с деклацацией unchecked эксепшна во throws?

Ок, можно, но всё равно смысла нет Ни разу, кстати, не видел, чтобы кто-то объявлял unchecked исключения в интерфейсе

D>>Уповать на хороший жавадок и то, что пользователь твоей библиотеки будет вдумчиво его читать, всё же не стоит.


B>Равно как и на то, что пользователь не будет делать catch (Exception ignore) {}

В этом случае программист точно сознательно забьёт на обработку. А джавадок он может невнимательно прочитать и про объявление исключения в интерфейсе забыть.
В общем, каждый остался при своём мнении Предлагаю дискуссию закончить.
С пятницей
Re: Какие вы видите проблемы в данном коде?
От: ddocker Россия www.codelab.ru
Дата: 21.05.07 12:16
Оценка: 1 (1) +2 :))) :)
аяй-яй, что же вы так тестовые задания всем интернетом решаете: http://company.yandex.ru/inside/job/dev_bugtracker.xml
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Какие вы видите проблемы в данном коде?
От: Дмитрий В  
Дата: 21.05.07 12:18
Оценка:
Здравствуйте, ddocker, Вы писали:

D>аяй-яй, что же вы так тестовые задания всем интернетом решаете: http://company.yandex.ru/inside/job/dev_bugtracker.xml

Бгыгыгыгыгыыыыыыыыыыыы
А там еще задания остались!
Re[2]: Какие вы видите проблемы в данном коде?
От: Donz Россия http://donz-ru.livejournal.com
Дата: 21.05.07 14:13
Оценка:
Здравствуйте, ddocker, Вы писали:

D>аяй-яй, что же вы так тестовые задания всем интернетом решаете: http://company.yandex.ru/inside/job/dev_bugtracker.xml

Интересно, что скажут по этому обсуждению экзаменаторы из Яндекса
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.