Я нынче жабу эксплуатирую. И вот в ней встает вопрос: моя либа юзает другую либу, которая кидает исключения. Спрашивается, кидать ли мне собственные исключения, или тупо выкидывать наверх родные исключения используемой либы? Вот в чем вопрос, приведший меня к Шекспиру.
Да, но ведь есть ещё вариант вообще ничего не бросать, а тупо вместо void вернуть false. Один хрен сторонняя библиотека нативная и выбрасывает исключительно Access Violation, а пользователю плевать, какая из моих магических строк (в прямом, кстати, смысле магических, поскольку я и сам ни капли не понимаю, как моя библиотека работает:)) оборвалась.
Главное, потом не забыть catch :) Серьёзно, вопрос в том, что будет проще в программе, использующей либу: проверить true/false или поймать exception. Если вызов функции, возвращающей true/false, многократен (и при false всё равно всё должно обламываться), то, IMHO, проще кинуть эксепшн (ибо ловить его можно в одном месте). А если эта функция вызывается один раз (например, для инициализации чего-то), то и true/false вполне сойдёт.
Ну, вообще-то, для Java, как я понимаю, вовращать true/false или и вовсе int в данном качестве - это вообще моветон. Собственно, риторический вопрос вверху правильно было бы заменить на вопрос: Exception or RuntimeException? Второе словно предполагает, что "да ты чё, мужик, у меня-то всё правильно, ты разберись, что ты там моим методам в параметры передаёшь, а на меня не наезжай!"
Кстати, как ваши успехи, а главное, впечатления от подкинутой мною вам книги? :)
Ну, я прочёл несколько первых глав и просмотрел последнюю (где про XML). Осознал, что это нам пока не нужно, и отложил на время.
Дело в том, что у нас трёхслойная архитектура: клиент - сервер приложения - сервер БД. И сейчас стоит задача переписать именно клиентскую часть на Яве. А вся привязка данных к БД находится в сервере приложения - самописном, там порядка 100 хитровывернутых SQL-запросов, выдающих данные в XML. Если бы я в самом начале владел этой технологией, я бы сделал сервер по-другому. Но сейчас очень не хочется корёжить уже работающий сервер. Впрочем, возможно, что в процессе разработки клиента придёт осознание, что сервер надо переделать - тогда в ход пойдёт и Java Persistence API.
Сейчас пока разбираюсь с JavaBeans и с биндингом объектов в Swing'е. Вот два дня убил на то, чтобы понять, как строку привязать к выбранному элементу таблицы...
Заодно ещё с Eclipse'а на IntelliJ IDEA перешёл. Так что пока башка пухнет от освоения новых (для меня) технологий :)
За IntelliJ IDEA платите или комьюнити-версию используете? Если второе, то я плохо понимаю этот переход. Впрочем, сам я наслаждаюсь нетбинсом. :) Там, кстати, делфистам полное раздолье: File -> Create -> Swing Application -> "О, чудо! Формы можно мышкой рисовать!"
Comments 9
(The comment has been removed)
Reply
(The comment has been removed)
Reply
Серьёзно, вопрос в том, что будет проще в программе, использующей либу: проверить true/false или поймать exception. Если вызов функции, возвращающей true/false, многократен (и при false всё равно всё должно обламываться), то, IMHO, проще кинуть эксепшн (ибо ловить его можно в одном месте). А если эта функция вызывается один раз (например, для инициализации чего-то), то и true/false вполне сойдёт.
Reply
Кстати, как ваши успехи, а главное, впечатления от подкинутой мною вам книги? :)
Reply
Дело в том, что у нас трёхслойная архитектура: клиент - сервер приложения - сервер БД. И сейчас стоит задача переписать именно клиентскую часть на Яве. А вся привязка данных к БД находится в сервере приложения - самописном, там порядка 100 хитровывернутых SQL-запросов, выдающих данные в XML. Если бы я в самом начале владел этой технологией, я бы сделал сервер по-другому. Но сейчас очень не хочется корёжить уже работающий сервер. Впрочем, возможно, что в процессе разработки клиента придёт осознание, что сервер надо переделать - тогда в ход пойдёт и Java Persistence API.
Сейчас пока разбираюсь с JavaBeans и с биндингом объектов в Swing'е. Вот два дня убил на то, чтобы понять, как строку привязать к выбранному элементу таблицы...
Заодно ещё с Eclipse'а на IntelliJ IDEA перешёл. Так что пока башка пухнет от освоения новых (для меня) технологий :)
Reply
Reply
Leave a comment