Вы находитесь на странице: 1из 16

Урок 9: Исключения

• Техника обработки ошибок


• Исключение
• Выброс исключений
• Обработка исключений
• Повторный выброс исключений
• Стандартные исключения
• Создание собственных исключений
• Конструкция using
Обработка ошибок
int AddClient(string email, string name)
{
Connection conn;

if (ConnectToDB(out conn) != 0)
{
string error = GetLastError();
SetLastError(“Не удалось подключиться к БД - ” + error);
return -1;
}

if (RunSqlQuery(conn, sql, out result) != 0)
{
string error = GetLastError();
SetLastError(“Ошибка при выполнении запроса - ” + error);
return -1;
}

return 0;
}
Результат метода
• 0 – все нормально
• не ноль - ошибка, смотри GetLastError
Каждый класс
• GetLastError
• SetLastError
Мало кода
int AddClient(string email, string name)
{
Connection conn = ConnectToDB();

SqlResult result = RunSqlQuery(conn, sql);

return 0;
}
Много кода
int AddClient(string email, string name)
{
Connection conn;

if (ConnectToDB(out conn) != 0)
return -1;

if (RunSqlQuery(conn, sql, out result) != 0)
return -1;

return 0;
}
Такой подход

НЕУДОБЕН
Решение

ИСКЛЮЧЕНИЯ
Исключение
• Прерывает выполнение программы
• Управление передается ближайшему
обработчику исключения
Метод
• Может вернуть результат
• Может вернуть результат через параметр
• Может выбросить исключение
Интерфейс метода
• Тип результата
• Параметры
• Возможные исключения
Выброс исключения

throw new Exception();


Exception

Базовый класс для всех исключений


Обработка исключений
• try
• catch
• finally
Как обойти finally?
1. выключить питание
2. бесконечный цикл
3. System.Exit()
Урок 9: Исключения
• Техника обработки ошибок
• Исключение
• Выброс исключений
• Обработка исключений
• Повторный выброс исключений
• Стандартные исключения
• Создание собственных исключений
• Конструкция using