Neue Ausnahme erstellen und auslösen

Antworten:

194

Verwenden Sie dieses Format, um eine bestimmte Ausnahme wie FileNotFoundException aufzurufen

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

Um eine allgemeine Ausnahme auszulösen, verwenden Sie den Befehl throw gefolgt von einer Zeichenfolge.

throw "Error trying to do a task"

Bei Verwendung innerhalb eines Catch können Sie zusätzliche Informationen darüber bereitstellen, was den Fehler ausgelöst hat

WiiBopp
quelle
In C ++ wird davon abgeraten, Zeichenfolgen zu werfen, da diese nicht in der Ausnahmehierarchie enthalten sind. Es funktioniert einfach wie in Powershell, aber vielleicht sind sie nicht der beste Weg?
Raúl Salinas-Monteagudo
3
Wenn Sie try..catches in Ihrem Skript verwenden und mehrere catch-Anweisungen haben, die bestimmte Ausnahmen aufrufen, möchten Sie natürlich den Ausnahmetyp angeben. Ich bin nicht sicher, warum auf C ++ verwiesen wird. In Powershell-Skripten dient eine throw-Anweisung normalerweise dazu, das Skript mit einer beschreibenden Nachricht zu beenden. Ich möchte keine Debatte auslösen, aber Powershell und C ++ sind extrem unterschiedliche Tiere. Das Anwenden von C ++ - oder C # -Best Practices auf Powershell sollte gemildert werden, da die Skripterstellung enger mit der funktionalen Programmierung verbunden ist.
WiiBopp