Вы ссылаетесь на устаревшую библиотеку (более 2 лет).Правильный SDK для этого - Клиентская библиотека Microsoft Graph .NET .Он включает в себя более свежую нумерацию кода ошибки .
Что касается обработки ошибки, то кода обычно достаточно для обработки исключений.Содержимое сообщения полезно для отладки, поскольку оно часто содержит более детальную информацию (что именно не удалось, какие свойства были недействительными и т. Д.).Мое общее правило - использовать code
для обработки ошибок, но регистрировать оба свойства code
и message
для отладки.
Важно понять, что разные конечные точки могут отображать один и тот же код ошибки по разным причинам.BadRequest
может означать что-то иное при выдаче GET
для ресурса user
, чем при выдаче от POST
до /events
.Ваш обработчик должен учитывать как action , так и error .
Вот пример ошибки, возвращаемой при отправке неверного запроса (/v1.0/me/a
):
{
"error": {
"code": "BadRequest",
"message": "Unsupported segment type. ODataQuery: users/48d31887-5fad-4d73-a9f5-3c356e68a038/a",
"innerError": {
"request-id": "fd4c8b27-26af-4b07-a5be-5efb139d1eb7",
"date": "2018-05-22T14:39:02"
}
}
}
Если бы все, что я обработал, было BadRequest
, мой обработчик, вероятно, был бы достаточно.Я могу обработать ошибку и заставить пользователя двигаться вперед.Однако в моем журнале я храню как BadRequest
, так и Unsupported segment type. ODataQuery: users/48d31887-5fad-4d73-a9f5-3c356e68a038/a
, чтобы я мог правильно сообщить об ошибке в коде.
Другим вариантом может быть дополнительный анализ.Допустим, /a
не всегда не возвращает ошибку.Возможно /a
отлично работает для учетных записей AAD, но не для пользователей MSA (FTR, /a
полностью вымышлен).Если бы это было так, я мог бы также проанализировать message
и посмотреть, включает ли BadRequest
«Неподдерживаемый тип сегмента», и обработать его немного иначе, чем BadRequest
, который не включал это сообщение.