Учебно-методический комплекс общее количество часов 58 ч. Лекции 28 ч


Download 2.46 Mb.
bet59/91
Sana19.10.2023
Hajmi2.46 Mb.
#1709453
TuriУчебно-методический комплекс
1   ...   55   56   57   58   59   60   61   62   ...   91
Bog'liq
Язык программирования C#

13.4. Выброс исключений

До сих пор мы обрабатывали исключения, которые уже были сгенерированы (выброшены) библиотечными методами. Но иногда бывает необходимо выбросить объект некоторого исключения самому, чтобы его можно было в последующем обработать. Для генерации (выброса) исключения используется ключевое слово throw. Общий формат его использования представлен на следующей схеме.




throw объект_исключения;

После выброса исключения оно должно быть обработано где-то выше по стеку вызовов, т.е. нормальное выполнение программы будет прервано до тех пор, пока не встретиться try-catch блок, способный обработать выброшенное исключение.


Для иллюстрации применения выброса исключений приведем следующий простой пример. Мы создаем форму регистрации в Интернет казино, и в ней пользователь должен ввести свой настоящие имя и фамилию. В самом простом случае ни имя, ни фамилия не могут содержать небуквенные символы. Есть много способов проверки ввода на правильность, но мы совместим метод регистрации с методом проверки на правильность и в случае неправильных данных будем генерировать исключение.

class Program


{
static void Register(string Name, string FamilyName)
{
for (int i = 0; i < Name.Length; i++)
if (!Char.IsLetter(Name, i))
throw new ApplicationException();
for (int i = 0; i < FamilyName.Length; i++)
if (!Char.IsLetter(FamilyName, i))
throw new ApplicationException();

Console.WriteLine("Регистрация прошла успешно!");


}

static void Main(string[] args)


{
string Name, FamilyName;

Console.Write("Имя: ");


Name = Console.ReadLine();

Console.Write("Фамилия: ");


FamilyName = Console.ReadLine();

try
{


Register(Name, FamilyName);
}
catch (ApplicationException)
{
Console.WriteLine("Ошибка при регистрации!");
}
}
}
Лист. 4.5

Наибольший интерес в этом листинге для нас представляет метод Register. Ему передаются два параметра: имя и фамилия клиента, далее этот метод проверяет параметры на релевантность и если они не верны, то генерирует исключение и прекращает свое выполнение, а если верны, выводит сообщение об успешной регистрации.


Метод Main приглашает пользователя ввести имя и фамилию, а затем передает эти данные методу Register. Вызов метода Register находится в защищенном блоке и в случае генерации исключения в качестве реакции на неверные данные, оно будет обработано и будет выведена соответствующая ошибка.
Пример вывода программы при двух различных запусках.

Имя: Иван


Фамилия: Иванов
Регистрация прошла успешно!
Имя: Nyk0r
Фамилия: D00M
Ошибка при регистрации!
Вывод. 4.4
В этом примере мы использовали стандартный тип исключений, но в реальных приложениях в подобных случаях лучше использовать свой собственный тип исключений.



Download 2.46 Mb.

Do'stlaringiz bilan baham:
1   ...   55   56   57   58   59   60   61   62   ...   91




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling