@Almazzz0v

C#, обработка исключений, почему нельзя обратится к свойству, через имя класса?

C#, обработка исключений, почему нельзя обратится к свойству, через имя класса?
Что я имею ввиду:
catch (DivideByZeroException dds)
{
	Console.WriteLine($"{dds.Message}"); // normal
}

В этом коде все нормально, но что если я не хочу создавать переменную , и обратится к свойству Message
catch(DivideByZeroException)
{
	Console.WriteLine($"{DivideByZeroException.Message}"); // error
}

Возникает ошибка, почему обратится без переменной недопустимо?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 3
потому что DivideByZeroException.Message - это попытка обратиться к статическому члену класса.
Нет переменной - нет и возможности обратиться к данным.

Если считаешь что так быть не должно - пиши предложение в language design, описывай зачем это надо, во что оно должно компилироваться на уровне IL, и как не сломать существующий код.
Ответ написан
Комментировать
@mvv-rus
Настоящий админ AD и ненастоящий программист
если я не хочу создавать переменную

А вы её и так, и так не создаете: экземпляр исключения создается при возбуждении исключения (помните синтаксис - throw new Exception() )? А вот чтобы обратиться к полям/свойствам/методам этого экземпляра, надо дать ему имя в конструкции catch и обращаться к нему по этому имени. А при указании в качестве имени экземпляра имени класса, вы, как выше вам написал Василий Банников , как и в любом другом месте, обращаетесь к статическому полю (или свойству) этого класса. Такой вот синтаксис у языка C#: обработчик исключения у него - это обычный блок, никаких специальных соглашений там нет( пока что, по крайне мере ;-) ).
Ответ написан
yarosroman
@yarosroman Куратор тега C#
C# the best
Объясню проще, class это описание объекта, например, деревянный стул с четырьмя ножками, а есть экземпляр класса, созданный в памяти через new. Так вот смотря на описание объекта, на листочке, например, как можно взять ножку у стула, физического? Читайте основы ООП.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы