Для чего вообще предназначена обработка исключений?
Обработка исключения и продолжение работы программы или обработка и завершение с информированием об ошибке?
В книжках она демонстрируется на уровне "ввели неверное значение, деление на 0, выход за границы массива", но это же логичней предусмотреть с помощью условий, акссессоров и т. п.
Когда нужно применять условия, а когда обработку?
Другие языки программирования и технологии
Обработка исключительных ситуаций. Как правильно использовать? Как она применяется на практике в реальных программах?
> Как правильно использовать?
В кодах, способных вызвать исключительные ситуации, не подлежащие предотвращению с помощью условий, акссессоров и т. п.
> Для чего вообще предназначена обработка исключений?
Для запрета на выдачу стандратного сообщения об ошибке и возможной его замены на собственное (например, локализованное) .
> Обработка исключения и продолжение работы программы или обработка и завершение с информированием об ошибке?
По возможности, первое.
> В книжках она демонстрируется на уровне "ввели неверное значение, деление на 0, выход за границы массива", но это же логичней предусмотреть с помощью условий, акссессоров и т. п.
Верно.
> Когда нужно применять условия, а когда обработку?
В большинстве случаев, можно и нужно применять условия.
Но приведу пример.
В ADО. NET заполнение набора данных DataSet данными из файла XML осуществляется методом ReadXml() класса DataSet:
dataSet1.ReadXml("C:\\file.xml");
А теперь смотрите.
Если файла C:\file.xml на диске не окажется, возникнет исключительная ситуация.
Если файл C:\file.xml окажется повреждённым, возникнет исключительная ситуация.
Если в файле C:\file.xml окажется опечатка, возникнет исключительная ситуация.
То же самое в примере, приведённом ответчиком Chaz Ashley ниже.
Очевидно, ни в первом, ни во втором случае условия не подходят. Остаётся использовать обработку исключительных ситуаций.
В кодах, способных вызвать исключительные ситуации, не подлежащие предотвращению с помощью условий, акссессоров и т. п.
> Для чего вообще предназначена обработка исключений?
Для запрета на выдачу стандратного сообщения об ошибке и возможной его замены на собственное (например, локализованное) .
> Обработка исключения и продолжение работы программы или обработка и завершение с информированием об ошибке?
По возможности, первое.
> В книжках она демонстрируется на уровне "ввели неверное значение, деление на 0, выход за границы массива", но это же логичней предусмотреть с помощью условий, акссессоров и т. п.
Верно.
> Когда нужно применять условия, а когда обработку?
В большинстве случаев, можно и нужно применять условия.
Но приведу пример.
В ADО. NET заполнение набора данных DataSet данными из файла XML осуществляется методом ReadXml() класса DataSet:
dataSet1.ReadXml("C:\\file.xml");
А теперь смотрите.
Если файла C:\file.xml на диске не окажется, возникнет исключительная ситуация.
Если файл C:\file.xml окажется повреждённым, возникнет исключительная ситуация.
Если в файле C:\file.xml окажется опечатка, возникнет исключительная ситуация.
То же самое в примере, приведённом ответчиком Chaz Ashley ниже.
Очевидно, ни в первом, ни во втором случае условия не подходят. Остаётся использовать обработку исключительных ситуаций.
Мара Ырысбеков
Спасибо. Все понятно)
SQLconnection cnn = new SQLconnection(connectionString);
SQLCommand comm = new SQLCommand("delete from table",cnn);
try
{
cnn.Open();
comm.ExecuteScalar();
cnn.Close();
MesageBox.Show("Запрос выполнился успешно! ");
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
Если у нас все ок. то выполняется запрос и вылазит табличка, что все прошло успешно, если соединение не удалось или еще че, то вылезет окошко с сообщением об ошибке. Если не использовать конструкцию try catch, то программа зависла бы и пришлось бы перезапускать, а с try catch у нас просто вылезет сообщение об ошибке, и программа продолжит выполнятся
SQLCommand comm = new SQLCommand("delete from table",cnn);
try
{
cnn.Open();
comm.ExecuteScalar();
cnn.Close();
MesageBox.Show("Запрос выполнился успешно! ");
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
Если у нас все ок. то выполняется запрос и вылазит табличка, что все прошло успешно, если соединение не удалось или еще че, то вылезет окошко с сообщением об ошибке. Если не использовать конструкцию try catch, то программа зависла бы и пришлось бы перезапускать, а с try catch у нас просто вылезет сообщение об ошибке, и программа продолжит выполнятся
Максим Левченков
Мой вариант проще.
dataSet1.ReadXml(C:\file.xml);
dataSet1.ReadXml(C:\file.xml);
Условия: Введите возраст: Восемьнадцать лет
if ((age = atoi(scanf(...) == 0)) // имеется ввиду, что функция а ту и, не смогла выудить числа в стринге.
printf("Error");
обработка, как пример, когда нужно из "18 лет" вырезать только 18, зная, что юзВерь может ошибиться, и ввести дополнительно что-то.
Или введите число от 1 до 5: 8 - Ошибка
Что касается вашего примера, с 0, это условие.. . хотя это также может и обработка.. . в зависимости от логики программиста, если он исключает ноль, то это условие, а если он проверяет ввод, и обнаруживает там, число, не равное 1-65535
Или я Вас не так понял?
if ((age = atoi(scanf(...) == 0)) // имеется ввиду, что функция а ту и, не смогла выудить числа в стринге.
printf("Error");
обработка, как пример, когда нужно из "18 лет" вырезать только 18, зная, что юзВерь может ошибиться, и ввести дополнительно что-то.
Или введите число от 1 до 5: 8 - Ошибка
Что касается вашего примера, с 0, это условие.. . хотя это также может и обработка.. . в зависимости от логики программиста, если он исключает ноль, то это условие, а если он проверяет ввод, и обнаруживает там, число, не равное 1-65535
Или я Вас не так понял?
Похожие вопросы
- Есть ли учебники обучающие написанию простеньких реальных программ?
- Почему у большинства для решения исключительных ситуаций существует только два решения: снести систему и формат диска?
- пишу на с++ программу-тест, выбор правильно ответа цифрой, но если я нажимаю символ, то программа сразу вылетает
- Как правильно использовать операторы цикла?
- Мои знакомые программисты (их двое) не используют систему контроля версий.. . ( они пишут очень сложную программу )
- Как правильно создать и использовать radiobutton-ы на win api c++ ?Можно ли из программы узнать версию Windows ?
- Какую программу лучше использовать для обработки изображений?
- помоги ащет фотошопа и программ для обработки фото
- Какую программу лючше использовать для обработки видео?? ? Помогите!
- Посоветуйте программы для обработки графики