От чтения ссылки документы страницы, которые вы упомянули, я все еще получаю впечатление, что вы должны вызвать .Report метод, а также в: -
Insights.Report(exception, new Dictionary <string, string> {
{"Some additional info", "foobar"}
});
Я полагать, что они говорят, в этом примере: -
try {
ExceptionThrowingFunction();
}
catch (Exception exception) {
exception.Data["AccountType"] = "standard";
throw;
}
что у вас есть возможность, когда любой Исключение встречается, чтобы упаковать дополнительную информацию, которую впоследствии можно передать на сервер Insights, как данных свойство Exception просто ключ/значение Словарь.
Так что, если вы имели Exception несколько слоев глубоко, вы можете повторно бросить исключение с дополнительной информацией, содержащейся в нем, что вы позже отправить на сервер Insights.
На более высоком уровне, вы можете взять исключение, сброшенная глубже призыва иерархии, а затем вызвать Insights.Report с: -
Insights.Report(
{the rethrown exception in your higher up try..catch block},
{rethrown exception}.Data
);
, который будет посылать все дополнительные Ключ/значение информация, полученная ранее.
видеть вашу последнюю часть вашего вопроса, хотя это выглядит, как вы заинтересованы в Insights обработки и отправки этого дополнительного .DATA автоматически должны там быть необработанное исключение.
Если он не отправляется в настоящее время, то, возможно, предложите им, чтобы это также можно было отправить? Поскольку это звучит, выполнимый запрос на это автоматически отправляется, а также исключение необработанного исключения .
Update 1: -
Да - Я понимаю, о необработанном исключении сценарии теперь, когда вы имеете в виду.
Я не имел дело с этим компонентом напрямую, поэтому могут быть крючки/обработчики событий или что-то уже определенное там, где вы можете использовать это, и выполнить какой-то пользовательский код незадолго до его отправки.
Если это не доступно, то, возможно, предложите это для включения в качестве бета-продукта?
В качестве альтернативы еще можно было достичь этого себе по захватывая в необработанных исключений только до им попадающие. Вы должны были бы кодировать это, однако, на каждой платформе.
Например, на Windows Phone в классе App есть Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
, к которому вы могли бы дополнить Exception брошенный с этим дополнительным .DATA.
Для Android вы могли бы взглянуть на эту post, который описывает как поймать uncaughtException, который поможет вам в захвате необработанных исключений.
ли просто дополняющий Exception в этих обработчиков выше достаточно все зависит от того, как они написали их крючок в этом, о том, как хорошо ведет себя и ли оно выполняется первым, до их реализация.
Вам нужно будет попробовать и посмотреть, не так ли. Если он не ведет себя хорошо, что позволяет дополнить дополнительные данные до автоматического вызова Insights, у вас есть другого запасного решение, чтобы просто сделать .Report вызова вручную в этих необработанного исключением обработчиков самостоятельно чтобы сделать эту работу и дополнить дополнительные . Данные для достижения вашей цели.
Я хочу подписаться на мероприятие, когда xamarin.insights собирается отправлять информацию об исключении unhandlede для включения дополнительных данных. Manual .Report() не работает для меня, потому что у меня не всегда есть контроль над сбоями. –
Я обновил свой ответ. См. (* Обновление 1 *). – Pete
Я бы не хотел полагаться на собственную реализацию обработки исключенных исключений, особенно с помощью mono и xamarin.android. Пока xamarin.insights уже реализовала логику обработки аварийных ситуаций, я хочу иметь возможность повторно использовать это. Более того, никто не гарантирует, что моя логика обработки возникает до логики xamarin.insights. –