0

У меня есть xamarin.android с xamarin.insights.Можно ли добавить дополнительную информацию для сбоев, обработанных Xamarin.Insights analytics framework

Сейчас каждый раз, когда я обрабатывать ошибку вручную (попробуйте/поймать) Я добавляю информацию об окружающей среде (постановка/производство):

try 
{ 
    ExceptionThrowingFunction(); 
} 
catch (Exception exception) 
{ 
    exception.Data["Environment"] = "staging"; 
    throw; 
} 

Но эта информация отсутствует в случае, если ошибка обрабатывается самой xamarin.insights (в случае аварии).

Можно добавить дополнительные данные исключения в случае аварии?

docs reference I used

ответ

1

От чтения ссылки документы страницы, которые вы упомянули, я все еще получаю впечатление, что вы должны вызвать .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 вызова вручную в этих необработанного исключением обработчиков самостоятельно чтобы сделать эту работу и дополнить дополнительные . Данные для достижения вашей цели.

+0

Я хочу подписаться на мероприятие, когда xamarin.insights собирается отправлять информацию об исключении unhandlede для включения дополнительных данных. Manual .Report() не работает для меня, потому что у меня не всегда есть контроль над сбоями. –

+0

Я обновил свой ответ. См. (* Обновление 1 *). – Pete

+0

Я бы не хотел полагаться на собственную реализацию обработки исключенных исключений, особенно с помощью mono и xamarin.android. Пока xamarin.insights уже реализовала логику обработки аварийных ситуаций, я хочу иметь возможность повторно использовать это. Более того, никто не гарантирует, что моя логика обработки возникает до логики xamarin.insights. –