Ошибка1073741855 (0x4000001f) при попытке преобразования null к типу, try-catch не работает

95
26 февраля 2021, 07:30

Есть код:

return ((IMenuItemVM) ((IContentVMBase) ChoosedMenu.Content).VM).CanContinue;

Все работает, но если, допустим свойство Content или VM или CanContinue равно null, то программа падает с ошибкой:

Программа "[8112] Blabla.exe" завершилась с кодом 1073741855 (0x4000001f).

Проблема в том, что даже если мы вставим подобное:

try {
    return ((IMenuItemVM) ((IContentVMBase) ChoosedMenu.Content).VM).CanContinue;
}
catch (Exception e) {
    MessageBox.Show(e.Message);
}
return false;

То ничего не изменится. Всё равно оно будет падать с кодом 1073741855 (0x4000001f).

Так-же у меня включены все исключения.

Answer 1

В дополнение к совершенно справедливому комментарию tym32167 https://stackoverflow.com/questions/4532457/program-and-debugger-quit-without-indication-of-problem, ИМХО, если вместо Вашей конструкции

return ((IMenuItemVM) ((IContentVMBase) ChoosedMenu.Content).VM).CanContinue;

использовать более старомодную и менее лаконичную конструкцию:

IContentVMBase content = ChoosedMenu.Content as IContentVMBase;
if( content == null ) return false;
IMenuItemVM mnuItem = content.VM as IMenuItemVM;
if( mnuItem == null ) return false;
return mnuItem.CanContinue;

то джентльмены находят, что она способствует сохранению нервных клеток.

UpDate: дополнение к ответу по просьбе автора вопроса и сформулированное автором вопроса SKProCH о способе настроек дебаггера, когда используется смесь из небезопасного кода:

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

READ ALSO
route и параметры

route и параметры

У меня имеется метод который принимает 3 параметра

73
C# использование сторонних классов в проекте

C# использование сторонних классов в проекте

Нужно написать небольшой функционал по работе с жестким дискомСама суть программы не важна

101
Не задаётся временная директория

Не задаётся временная директория

К проекту на laravel 56 подключён пакет MPDF

113
Почему php выдает эту ошибку?

Почему php выдает эту ошибку?

Parse error: syntax error, unexpected '$content_width' (T_VARIABLE) in /var/www/u0665743/data/www/hqherbru/wp-content/themes/digitalworld/functions

96