Как я могу узнать результат отправки отчета об ошибке MadExcept из приложения Delphi

Я не могу найти способ определить, можно ли отправить отчет об ошибке из моего приложения D2006. Если MadExcept может предоставить какой-то код возврата, я, возможно, смогу дать пользователю некоторые рекомендации относительно того, что может быть не так.


person rossmcm    schedule 24.02.2011    source источник
comment
Если ваш код может реагировать на перехват исключения MadExcept, ваше приложение должно перехватывать и обрабатывать исключение самостоятельно. MadExcept предназначен для отслеживания проблем, о которых вы не знаете и, следовательно, не можете справиться. IOW, нет необходимости в коде возврата; если у вас есть возможность проверить это, вы уже должны были поймать и обработать само исключение.   -  person Ken White    schedule 24.02.2011
comment
Наличие информации о состоянии результата, такой как «Не удалось связаться с SMTP-сервером», «Невозможно ретранслировать» или (в случае POST на веб-сервере), «Ошибка HTTP 503», которая может быть отображена пользователю или зарегистрирована, было бы неплохо имеют. Конечно, это нельзя использовать в том месте, где произошло исключение. Но обычно он передается обработчику событий (например, OnAfterSendReport), где пользовательский код может решить, что делать с информацией. Согласно документам, RegisterExceptionHandler с eaContinueApplication может быть способом сделать это (в следующей версии madExcept)   -  person mjn    schedule 24.02.2011
comment
@ Кен, на самом деле я не говорю о том, что я обрабатываю исключение в своей программе. Я предполагаю, что ME перехватил исключение и представляет пользователю диалоговое окно, в котором одна из кнопок отправляет отчет об ошибке. Что мне нужно, так это какой-то способ узнать, что он не отправил и почему он не отправил, чтобы я мог поручить пользователю сохранить отчет об ошибке и отправить его по электронной почте вручную.   -  person rossmcm    schedule 24.02.2011
comment
вы можете настроить ME так, чтобы отчет об ошибке сохранялся автоматически (либо путем добавления к существующему отчету, либо усечением и созданием нового), а также предлагал возможность отправить его. Таким образом, у вас есть копия отчета, даже если электронная почта не работает.   -  person Ken White    schedule 24.02.2011
comment
@Кен. Конечно, я могу сделать так, чтобы МНЕ сохранял отчет об ошибке автоматически (и я могу сохранить его сам, когда перехватываю исключение), но я просто подумал, что было бы неплохо иметь возможность всплывать диалоговое окно, в котором говорилось, что я не могу отправить сообщение об ошибке. отчет - не могли бы вы перейти в ‹папку› и отправить ‹некоторый ZIP-файл› на [email protected]   -  person rossmcm    schedule 24.02.2011


Ответы (2)


Проблема в том, что MadExcept не может разумно определить это. Существует целая цепочка вещей, которые могут пойти не так после того, как Madexcept отправит электронное письмо. Вы получите исключение, если MadExcept не сможет построить отчет или возникнет немедленная проблема с отправкой электронного письма.

  • почтовый клиент приходит с сообщением, пользователь не нажимает кнопку «Отправить»
  • почтовый клиент не работает или неправильно настроен
  • Хост SMTP неисправен, не работает или отсутствует
  • ваш клиент находится на RBL, на который вы подписаны (возможно, неосознанно)
  • домен вашего клиента находится в RBL или иным образом заблокирован
  • ваша почтовая система дает сбой, и вы теряете это письмо

Лучшее, что вы можете получить от MadExcept, это «исключения не выброшены, возможно, отправка прошла нормально».

person Community    schedule 24.02.2011
comment
Хорошо, когда вы говорите, что исключение не выбрасывается, как я могу это определить? - person rossmcm; 24.02.2011
comment
Насколько я помню, если MadExcept выдает исключение, ваше приложение закрывается. Но это то, для чего форумы/документы Madshi лучше, чем SO. Я предлагаю спросить на forum.madshi.net - person ; 25.02.2011

Возможно, это не полное решение, но полезная информация: если отчет об ошибке отправляется с использованием HTTP-запроса POST на веб-сервер, madExcept может определить, содержит ли ответ заголовок перенаправления HTTP, и в этом случае madExcept запустит веб-браузер по умолчанию и загрузит URL-адрес, указанный в перенаправлении.

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

Веб-сервер может даже проанализировать отчет об ошибке и предоставить дополнительную информацию, такую ​​как «Эта ошибка уже известна, и у нас есть обновление приложения, которое ее исправит, вы можете скачать его здесь». (Я написал веб-приложение, madxnet, для этой цели - оно до сих пор доступно для тестирования).

person mjn    schedule 24.02.2011
comment
Интересное веб-приложение. Есть ли шанс, что вы захотите поделиться кодом? Если хотите, без части анализа (могу представить, что там будут какие-то проприетарные вещи)? - person Marjan Venema; 24.02.2011
comment
@Marjan это не Delphi, а код Java (простое веб-приложение, работающее на Google App Engine), и в настоящее время проект неактивен, пока я не найду спонсоров :) - person mjn; 24.02.2011