forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Обработка ошибок в MP2.0.2 (http://forum.boolean.name/showthread.php?t=17778)

ViNT 21.01.2013 15:46

Обработка ошибок в MP2.0.2
 
Вложений: 1
Всем известно, что в случае runtime-ошибки в коде (например, неверное имя файла) MP наглухо зависает, не указывая, какая ошибка произошла.
Похоже, я нашел костыльное, но рабочее решение.

Вероятно, в новых версиях данную багу (или фичу?) уже пофиксили, но...
Лично мне больше нравится 2.0.2.
Так что, данная заметка для тех, кто все еще пользуется старой версией.

Разработчики поступили следующим образом:
Каждая процедура или функция (в том числе код главного модуля) выдает exception, который перебрасывается далее, в метод M.run(). Этот метод не перебрасывает исключение далее, а обрабатывает его. Точнее, он его "ловит", но никак не обрабатывает.

Идея состоит в том, чтобы заменить код обработки исключения на свой, и в случае какой-либо ошибки выводить сообщение с информацией об ошибке. Проблема в том, что основной код находится в том же классе, что и метод run(). Поэтому, я придумал следующий костыль.

Добавляем в проект модуль mainunit, в нем процедуру main (примерно, как в Си). Теперь весь код, который мы писали бы в файле проекта, будем писать в этом модуле. процедура main будет заменять главный блок begin...end. В главном модуле не пишем ничего. Теперь можно спокойно заменить класс M.class на "пропатченный" (например, с помощью MPExt).

Описание немного сумбурное, но пока непонятно, будет ли это кому-то интересно. Если будет интересно, буду ковырять дальше (в планах разработка мастера создания проектов под такую концепцию и раскуривание других возможных профитов от патча M.class).

На данный момент сообщения об ошибках выводятся через стандартный Alert. Прилагаю тестовый файл M.class и проект.

Главный вопрос: это кому-нибудь интересно (или все уже перешли на новые версии)?

nil0q 23.01.2013 19:27

Ответ: Обработка ошибок в MP2.0.2
 
Цитата:

Сообщение от ViNT (Сообщение 250222)
для тех, кто все еще пользуется старой версией

Кто-то всё ещё пользуется мидлетпаскалем? :mda:


В 3.5 предрелизе подобного не замечено, но там и свои недоработки есть.


Часовой пояс GMT +4, время: 15:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot