Ich habe eine Situation, wo ich mehr benutzerdefinierten Ausnahmen in einem try-Block in meinem Powershell-Skript so etwas wie untenmehr als eine benutzerdefinierte Ausnahme in Powershell zu werfen
try {
if (!$condition1) {
throw [MyCustomException1] "Error1"
}
if (!$condition2) {
throw [MyCustomException2] "Error2"
}
}catch [MyCustomException1] {
#do some business logic
}catch [MyCustomException2] {
#do some other business logic
}catch{
#do something else
}
Gibt es eine Möglichkeit, es zu tun in Powershell werfen muß ohne die .net Klasse MyCustomException1
und MyCustomException2
zu schreiben. Ich muss keine Informationen in der Klasse speichern, aber ich brauche nur einen Weg, um die Ausnahmen zu unterscheiden. Ich könnte tun, wie unten, aber ich frage mich nur, ob etwas sauberer.
try {
if (!$condition1) {
throw "Error1"
}
if (!$condition2) {
throw "Error2"
}
}catch {
if($_.tostring() -eq "Error1"){
Write-Host "first exception"
}elseif($_.tostring() -eq "Error2"){
Write-Host "Second exception"
}else {
Write-Host "third exception"
}
}
Anmerkung: Ich habe bereits unter Stack-Überlauf Fragen geprüft: powershell-creating-a-custom-exceptionpowershell-2-0-try-catch-how-to-access-the-exceptionpowershell-creating-and-throwing-new-exception Aber es ist meine Frage nicht beantwortet.
Ich möchte die Fehler in verschiedenen Catch-Blöcken anstelle von einem Catch-Block und dann setzen, wenn Bedingungen. Ich muss einige Geschäftslogik in den Catch-Blöcken durchführen. Um die Frage einfach zu machen ich einfach den write-host Aussagen – Pramod
@Pramod Sie erhalten eine 'catch' pro Fehlertyp, aber Sie sagten Sie wollten nicht Fehlertypen machen. – BenH
Ja, ich möchte nur wissen, ob es einen Weg gibt, einen "Fangblock" pro Fehlertyp zu bekommen, ohne '' net' Klassen für 'MyCustomException1' und' MyCustomException2' zu erstellen. – Pramod