62 / 63 / 28
Регистрация: 10.01.2018
Сообщений: 360
1

Исключения из библиотеки классов

05.03.2018, 00:51. Показов 1629. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Для некоторых тема будет, скорее всего, до крайности банальна, но прошу отнестись с понимаем и помочь разобраться.
При написании библиотеки столкнулся с непониманием как правильно работать с исключениями.
Синтаксис я хорошо понял/запомнил, проблемы с логикой генерации исключений и их обработкой.
По началу делал примерно следующим образом
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public bool Method()
{
    try
    {
        //много строк
        return true;
    }
    catch (Exception ex)
    {
        //обработка ex
        return false;
    }
}
Но это вызывало некоторые неудобства, начал искать больше информации и в итоге прочитал что так делать ни в коем случае нельзя потому что
Это пример некорректного использования generic обработчика исключений.
... и ещё много текста.
В попытках понять как "нужно" прочитал ответ , с кучей "лайков" под ним, в котором говорилось, что необходимо просто передать исключение выше и пусть разбирается тот кто вызывал метод. Окей, повторная генерация исключения меня устраивает. Но решил прочитать что про этот случай говорит мсдн. Конкретно, по исключениям из библиотеки, информации там не нашел, но прочитал что чуть ли "ни в коем случае" нельзя использовать исключения там, где мы их ожидаем, то есть где ситуация перестает быть исключительной. Нужно использовать if. А если уж и использовать исключения то обрабатывать их поближе к месту вызова. Как я это пониманию: если я знаю где может быть проблема - я должен использовать if, но если не знаю то должен, использовать try для обработки совершенно исключительной ситуации, только использовать конструкцию в том где где может возникнуть ошибка, дабы не завернуть лишние строки кода. Но, простите за невежество, если я не знаю где в коде может быть исключительная ситуация то как я пойму что вот тут нужно использовать try, но если я вдруг узнал это то я автоматом должен использовать if, когда же тогда использовать try, не нарушая никаких принципов?
И неужели
C#
1
2
3
try{
//Чистый код работы с файлом
}catch{}
хуже читается или более медленный чем
C#
1
2
3
4
if(!File.Exists(file) /*|| файл недоступный для чтения */ )
return;
//Предугадываем какие исключения могут возникнуть во время работы с файлом и пишем проверки для них
// закрываем с проверкой файл. Считаем что файл нормально закрылся дабы не продолжать.
Короче говоря я в полном замешательстве. Подскажите или направьте на путь истинный, как же всё таки правильно (не?)использовать исключения в тех местах, где вероятность их возникновения достаточно высока и нету возможности обработать их не отходя от кассы, как, например, в той же библиотеке классов

PS прошу прощения за "лирику" в вопросе, иначе я не знаю как объяснить в чем проблема. Возможно я драматизирую, просто нужно меньше обращать внимания на разные статьи и делать как удобно?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2018, 00:51
Ответы с готовыми решениями:

Создание dll библиотеки в C#. Вызов классов этой библиотеки
мне нужно как то создать динамическую библиотеку класов в си шарп, основой этой библиотеки должен...

Использование библиотеки классов
я создал проект class library3 откомпилировал в dll потом создал другой проект. project->add...

Подключение библиотеки классов
Есть библиотека небольшая using System; using System.Collections.Generic; using...

Подключение пользовательской библиотеки классов
На прологе написал длл, для простоты она просто генерирует какое либо число global predicates ...

2
3560 / 2501 / 1174
Регистрация: 14.08.2016
Сообщений: 8,206
05.03.2018, 01:29 2
ловить исключения всегда, когда они, даже "эфемерно" могут случиться!!!
твой же пример: проверил наличие файла - можно не ловить исключение? - неа: он есть, но занят - IO кинет исключение, не кинул - работаем
коннектимся к базе(не файловой) - ее нет - исключение - уведомление "мимо"(иначе краш)
опять же файл - "мы писАли-мы писАли- наши пальчики устали" - сохранить - (сеть отвалилась, куда?)/(диск переполнен, куда?)
сумбурно, но по теме
1
Эксперт .NET
17685 / 12871 / 3365
Регистрация: 17.09.2011
Сообщений: 21,136
05.03.2018, 09:23 3
Цитата Сообщение от Sternman Посмотреть сообщение
как же всё таки правильно (не?)использовать исключения в тех местах, где вероятность их возникновения достаточно высока и нету возможности обработать их не отходя от кассы, как, например, в той же библиотеке классов
Обрабатывайте исключения в том месте, где у вас есть возможность их обработать.
1
05.03.2018, 09:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2018, 09:23
Помогаю со студенческими работами здесь

Использование библиотеки классов NetOffice 1.6.0
Пробовал ли кто-нибудь использовать библиотеку классов NetOffice 1.6.0 для работы с файлами Excel и...

Создание собственной библиотеки классов
Общая постановка задачи: Создать собственную библиотеку, включив в нее разработанный класс (по...

Создание собственной библиотеки классов
Создать собственную библиотеку, включив в нее разработанный класс (по индивидуальному заданию). ...

Вызов функции из библиотеки классов
всем здрасте) у меня есть библиотека классов с формой(назовём плагин) подключённая в главном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru