MAUI: глобальная обработка исключений со страницей ошибки или закуской

Я пробую новый .Net MAUI для создания личного проекта. На работе мы используем Flutter, и мы использовали глобальную обработку ошибок для отображения страницы ошибки в случае исключений API или ошибки рендеринга виджета (он ловит все) (как и в React), ссылка здесь: https://docs.flutter.dev/ тестирование/ошибки.

Я пытаюсь сделать то же самое с MAUI, но я не могу добиться этого на iOS, приложение по-прежнему падает каждый раз, даже если я использую MarshalManagedException или любую другую вещь, которую я нашел в Интернете (я использовал все опубликованные решения на MAUI GitHub о глобальном исключении обработки). На Android и Windows я могу отловить ошибку и установить для обработки значение true, чтобы предотвратить сбой приложения.

Я хочу сделать то же самое, что и Flutter, поймать исключение и отобразить страницу с ошибкой (возможно, со скрытым стеком по умолчанию, как мы делаем в приложении Flutter).

Кто-нибудь может мне помочь ? Или это невозможно на MAUI (я хочу попробовать другую технологию, кроме Flutter).

1 ответ

«Глобальный обработчик исключений» на Мауи — это ТОЛЬКО возможность записать подробности о том, что приводит к сбою приложения, прежде чем оно исчезнет — это не восстанавливаемое состояние. Потому что, как только код попадает туда, Мауи не может гарантировать, что можно безопасно делать что-либо отображаемое.

  • Чтобы избежать сбоя приложения, необходимо завернуть все вtry..catch. Это означает, что везде ваш код получает контроль . Каждый метод обработки кнопок и т.д.

Даже тогда есть способы сломать внутренности Мауи или графику платформы — но если вы пробовали все, то это только крайние ситуации.

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

Я действительно хотел бы, чтобы Мауи предложил простой способ обернуть все пользовательские взаимодействия в один обработчик исключений (который может восстанавливаться и продолжаться). Но это не так.

(Возможно, часть Blazor Maui для веб-кода. Я не знаком с этим.)

Другие вопросы по тегам