Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.
Console.WriteLine("n*** Error! ***"); // ошибка
Console.WriteLine("Method: {0}", e.TargetSite); // метод
Console.WriteLine("Message: {0}", e.Message); // сообщение
Console.WriteLine("Source: {0}", e.Source); // источник
}
// Ошибка была обработана, выполнение продолжается со следующего оператора.
Console.WriteLine("n***** Out of exception logic *****");
Console.ReadLine();
По существу блок
try
catch
try
catch
***** Simple Exception Example *****
=> Creating a car and stepping on it!
Jamming...
=> CurrentSpeed = 30
=> CurrentSpeed = 40
=> CurrentSpeed = 50
=> CurrentSpeed = 60
=> CurrentSpeed = 70
=> CurrentSpeed = 80
=> CurrentSpeed = 90
=> CurrentSpeed = 100
*** Error! ***
Method: Void Accelerate(Int32)
Message: Zippy has overheated!
Source: SimpleException
***** Out of exception logic *****
Как видите, после обработки исключения приложение может продолжать свое функционирование с оператора, находящегося после блока
catch
Выражение throw (нововведение в версии 7.0)
До выхода версии C# 7 ключевое слово
throw
throw
Конфигурирование состояния исключения
В настоящий момент объект
System.Exception
Accelerate()
Message
Exception
TargetSite
StackTrace
HelpLink
Data
Свойство TargetSite
Свойство
System.Exception.TargetSite
TargetSite
TargetSite
System.Reflection.MethodBase
catch
// Свойство TargetSite в действительности возвращает объект MethodBase.
catch(Exception e)
{
Console.WriteLine("n*** Error! ***");
Console.WriteLine("Member name: {0}", e.TargetSite); // имя члена
Console.WriteLine("Class defining member: {0}",
e.TargetSite.DeclaringType); // класс, определяющий член
Console.WriteLine("Member type: {0}",
e.TargetSite.MemberType);
Console.WriteLine("Message: {0}", e.Message); // сообщение
Console.WriteLine("Source: {0}", e.Source); // источник
}
Console.WriteLine("n***** Out of exception logic *****");
Console.ReadLine();
На этот раз в коде используется свойство
MethodBase.DeclaringType
SimpleException.Car
MemberType
MethodBase
catch
*** Error! ***
Member name: Void Accelerate(Int32)
Class defining member: SimpleException.Car