Цель занятия: Научиться обрабатывать возникающие исключения и вырабатывать свои, путём создания пользовательского класса исключения. Common Language Runtime (CLR) – среда в которой как правило выполняется ваш код на C#. Именно ей, либо пользовательским методом вырабатываются исключения. Для перехвата и работы с исключениями код должен содержать необходимые обработчики. Та часть кода, в которой может произойти (выработаться) исключение программистом заключается в специальный блок. Этот блок называется try {}. Код, который будет работать в случае возникновения всех (либо определённого вами) исключения помещается в блок catch {}. Пример: try { float a=float.Parse(textBox1.Text); } catch (Exception ex) { MessageBox.Show("Ошибка: "+ex.Message,"Я инфа об ошибке"); } Скомпилируйте данный пример и протестируйте. Вы увидите, что происходит в случае успешного преобразования содержимого текстбокса в float и в случае ввода к примеру букв. Для выработки собственных исключений необходимо дополнительно сделать две вещи. Первая – создать свой класс исключения, унаследованный от System.Exception. Вторая – вырабатывать возникновения своего исключения при необходимости. Делается это посредством указания в нужном вам месте ключевого слова throw, после которого указывается объект-исключение. Этот объект передаётся в блок catch {}. Вы могли уже сталкиваться с подобными обработчиками в С++. Однако в отличии от имеющихся в нём конструкция блока catch {} иная. Вы наверное уже поняли это, если работали с ней в С++. Также появился блок finally {}. Код, который помещается в него выполняется в любом случае. Это значит что в независимости от того было исключение или нет – в блок finally {} код зайдёт. Пример: try { System.IO.StreamReader chitau = new System.IO.StreamReader(openFileDialog1.FileName); string soderjfail = chitau.ReadToEnd(); if ((soderjfail[0] < '0') || (soderjfail[0] > '9')) throw new priplili(); } catch (priplili osh) { MessageBox.Show("Ошибка: " + osh.Message, "Внимание, ГОВОРИТ МОСКВА: "); } finally { chitau.Close(); }; Данный код содержит пример выработки нового собственного исключения в случае необходимости, а также ошибку =). Скомпилируйте пример и найдите её, если не видно невооружённым глазом, так как понимание данной ошибки весьма полезно в дальнейшем программировании. //И ещё класс вырабатываемого исключения. public class priplili : System.Exception { // } Содержит 4 задания. Задание 1 Реализовать оконное приложение, выполняющее деление одного указанного пользователем числа на другое, в котором обрабатываются все возможные исключения. При возникновении исключения выводить MessageBox с информацией о исключении. Перед сдачей задания преподавателю протестируйте получившееся приложение, вводя не числа или положительное делимое и делитель равный нулю. Задание 2 Реализовать оконное приложение, с кнопкой и текстбоксом. После нажатия на кнопку приложение должно проверять введённое в текстбоксе и если это число, то умножать его на число Pi(округлить можно до 3.14). А если введено не число, то приложение должно дописать к введённой строке "*0987654321". Результат выводить в тоже самое поле для ввода. Задание 3 Реализовать ещё раз оконное приложение, с кнопкой и текстбоксом. При нажатии на кнопку у пользователя должно спрашиваться желает ли он открыть файл. Если да, то перевести его на окно выбора файла к открытию, а если нет – предложить ему выполнение любого из предыдущих заданий на выбор. Если пользователь выбрал в окне файл, то должно производиться чтение содержимого и преобразование в число. После преобразования необходимо умножить его на 10. В случае если преобразование невозможно, то необходимо выработать исключение посредством команды throw, которое сообщит пользователю о невозможности преобразования. Задание 4 Модифицировать приложение из предыдущего задания. Необходимо добавить в него корректное чтение и преобразование данных из файла, на случай если там только цифры, но их кол-во равно русскому параметру «Дохрена». Прочитанное число такого параметра должно быть умножено на 10 и разделено на 2. Также необходимо добавить на форму поле для удобного просмотра выводимого результата.