В 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
Можно ли получить подробности сбоя теста при обнаружении ошибки?