Захватить причину сбоя 'Test- Json' при использовании блока try / catch - PullRequest
2 голосов
/ 08 июля 2020

В PowerShell я проверяю некоторые JSON на соответствие схеме с помощью командлета Test-Json. Если JSON недействителен для схемы, детали выводятся на экран. Однако, если команда Test-Json заключена в блок try / catch, эти данные будут потеряны.

Например ...

Test-Json -Json $json -Schema $schema

, если этот тест не прошел, но нет блока try / catch, вы могли бы ожидать увидеть что-то подобное (взято из документации ) -

Test-Json : IntegerExpected: #/age
At line:1 char:37
+ "{'name': 'Ashley', 'age': '25'}" | Test-Json -Schema $schema
+                                     ~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidData: (:) [Test-Json], Exception
+ FullyQualifiedErrorId : InvalidJsonAgainstSchema,Microsoft.PowerShell.Commands.TestJsonCommand
False

Однако добавьте try / Блок catch, и теперь я не могу понять фактическую причину сбоя - IntegerExpected: #/age.

try
{
    Test-Json -Json $json -Schema $schema
}
catch
{
    throw $_.Exception.Message
}

JSON недействителен для схемы.

В этом случае нет внутреннего исключения - $_.Exception.InnerException.Message. И дополнительных данных нет за исключением - $_.Exception.Data

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

...