Обработка исключений

Содержание

Слайд 2

Обработка исключительных ситуаций Козьминых Н.М. Исключительные ситуации – это нарушение спецификаций,

Обработка исключительных ситуаций

Козьминых Н.М.

Исключительные ситуации – это нарушение спецификаций, не предусмотренные

разработчиком.
В таких исключительных ситуациях продолжение выполнения программы:
либо становится невозможным (попытка выполнить операцию деления на ноль, открыть несуществующий файл и т.д.);
либо приведёт к некорректным результатам.
Слайд 3

Обработка исключительных ситуаций Козьминых Н.М. try{ … } catch(( ){ …

Обработка исключительных ситуаций

Козьминых Н.М.

try{
… }
catch((<Класс исключения> <объект исключения>){
… }
finally{
… }
try (охраняемый

блок) – блок, в котором возможна ошибка (исключительная ситуация).
catch – блок, в котором происходит обработка исключительных ситуаций.
finally – блок финализации, выполняется вне зависимости произошла или нет обработка исключительной ситуации.
Слайд 4

Классификация исключений Козьминых Н.М. Класс System.Exception (исключение) – базовый класс, от

Классификация исключений

Козьминых Н.М.

Класс System.Exception (исключение) – базовый класс, от которого наследуются

все другие исключения.
В пространстве имён System определены исключения: ArgumentException, ArgumentOutOfRangeException, ArithmeticException, DivideByZeroException, OverflowException.
В пространстве имен System.IO собраны классы исключений, связанных с проблемами ввода-вывода: DirectoryNotFoundException,
FileNotFoundException и др.
Слайд 5

Обработка исключений. Блок catch Козьминых Н.М. Класс исключения должен относится к

Обработка исключений. Блок catch

Козьминых Н.М.

Класс исключения должен
относится к числу классов исключений, в

простейшем случае – к классу Exception.
Обработчиков может быть много, но исключение захватывает лишь тот из них, кто стоит первым в списке проверки.
Первыми должны идти наиболее специализированные обработчики, далее – по мере возрастания универсальности.
Например, в начале должен идти обработчик исключения DivideByZeroException, а уже за ним – ArithmeticException.
Слайд 6

Обработка исключений. Блок finally Козьминых Н.М. Блок finally выполняется всегда, сразу

Обработка исключений. Блок finally

Козьминых Н.М.

Блок finally выполняется всегда, сразу после завершения работы

try-блока, как бы последний ни завершился
Блок try:
может завершиться нормально и управление достигнет конца блока;
выполнение может прервано исключительной ситуацией;
управление может быть передано другому блоку из-за выполнения такого оператора, как return.
Слайд 7

Пример Козьминых Н.М. private void btn_Click(object sender, EventArgs e) { int

Пример

Козьминых Н.М.

private void btn_Click(object sender, EventArgs e)
{
int a = Convert.ToInt32(txtA.Text);

int b = Convert.ToInt32(txtB.Text);
btn.Text = (a / b).ToString();
}
Слайд 8

Пример Козьминых Н.М. private void btn_Click(object sender, EventArgs e) { try

Пример

Козьминых Н.М.

private void btn_Click(object sender, EventArgs e)
{
try
{
int a

= Convert.ToInt32(txtA.Text);
int b = Convert.ToInt32(txtB.Text);
button13.Text = (a / b).ToString();
}
catch
{
MessageBox.Show("Ошибка!");
}
}
Слайд 9

Пример Козьминых Н.М. private void button13_Click(object sender, EventArgs e){ try {

Пример

Козьминых Н.М.

private void button13_Click(object sender, EventArgs e){
try {
int a

= Convert.ToInt32(txtA.Text);
int b = Convert.ToInt32(txtB.Text);
button13.Text = (a / b).ToString();
}
catch (System.DivideByZeroException) {
MessageBox.Show("Ошибка: деление на ноль");
}
catch (System.FormatException) {
MessageBox.Show("Ошибка: Введите цифры");
}
}
Слайд 10

Пример Козьминых Н.М. private void button13_Click(object sender, EventArgs e) { int

Пример

Козьминых Н.М.

private void button13_Click(object sender, EventArgs e) {
int a,

b;
try {
a = Convert.ToInt32(txtA.Text);
}catch (System.FormatException) {
MessageBox.Show("Значение А - введите число");
txtA.Focus();
return;
}
try{
b = Convert.ToInt32(txtB.Text);
}catch (System.FormatException){
MessageBox.Show("Значение B - введите число");
txtB.Focus();
return;
}
try{
button13.Text = (a / b).ToString();
}catch (System.DivideByZeroException){
MessageBox.Show("Ошибка: деление на ноль");
}
}