Criando e lançando nova exceção

Respostas:

194

Para chamar uma exceção específica, como FileNotFoundException, use este formato

if (-not (Test-Path $file)) 
{
    throw [System.IO.FileNotFoundException] "$file not found."
}

Para lançar uma exceção geral, use o comando throw seguido de uma string.

throw "Error trying to do a task"

Quando usado dentro de uma captura, você pode fornecer informações adicionais sobre o que acionou o erro

WiiBopp
fonte
No C ++, é desencorajado o lançamento de strings, pois elas não estão na hierarquia de exceções. Simplesmente funciona, como no PowerShell, mas talvez eles não sejam o melhor caminho a percorrer?
Raúl Salinas-Monteagudo
3
Se você estiver usando try..catches em seu script e tiver várias instruções catch chamando exceções específicas, é claro que você desejará especificar o tipo de exceção. Não sei por que é feita referência ao C ++. Nos scripts do Powershell, uma instrução throw geralmente se destina a sair do script com uma mensagem descritiva. Não pretendo desencadear um debate, mas o Powershell e o C ++ são animais extremamente diferentes. A aplicação das melhores práticas de C ++ ou C # ao Powershell deve ser moderada, pois os scripts estão mais associados à programação funcional.
WiiBopp 4/06/19