web-dev-qa-db-fra.com

Comment puis-je annuler une exception du bloc catch dans Powershell?

Dois-je aborder la gestion des exceptions de la même manière que .Net?

Ensuite, comment puis-je relancer une exception du bloc catch dans Powershell?

'throw' est suffisant ou 'throw $ _' serait mieux?

48
pencilCake

throw mot-clé dans PowerShell se comporte différemment de l'implémentation .net: dans .net, vous ne pouvez lancer que System.Exceptions lui-même ou ses successeurs, mais dans PowerShell, vous pouvez lancer n'importe quoi et qui est automatiquement enveloppé dans un System.Management.Automation.RuntimeException. Voir l'extrait ici .

Si vous aimez relancer l'exception d'origine, vous pouvez utiliser throw (la plus courante) ou throw $_, ou throw $_.Exception

ps: à l'intérieur catch variable $_ ne fait pas exception en soi, mais System.Management.Automation.ErrorRecord qui contient une exception

88
Akim