因此,我一直在使用Powershell進行錯誤處理,並且目前爲止使用Try/Catch
,並且每當發生錯誤時,它都會寫入日誌文件。在PowerShell中捕獲意外錯誤
現在我該如何處理意外錯誤?我應該只將整個腳本代碼放在Try/Catch
區塊中,還是有更好的方法來做到這一點?
感謝您的任何幫助。
因此,我一直在使用Powershell進行錯誤處理,並且目前爲止使用Try/Catch
,並且每當發生錯誤時,它都會寫入日誌文件。在PowerShell中捕獲意外錯誤
現在我該如何處理意外錯誤?我應該只將整個腳本代碼放在Try/Catch
區塊中,還是有更好的方法來做到這一點?
感謝您的任何幫助。
你是對的。當你使用默認的try/catch(/ finally)語句時,所有的異常都會被捕獲到catch塊中。
try {
Do-Someting
} catch {
Write-Host "Caught the following error: $($_.Exception.Message)"
} finally {
Write-Host "Finally, we made it!"
}
當你特別添加例外趕上,你可以爲異常創建具體行動:
try{
Do-Something
} catch [System.Management.Automation.ItemNotFoundException]{
# catching specific exceptions allows you to have
# custom actions for different types of errors
Write-Host "Caught an ItemNotFoundException: $($_.Exception.Message)" -ForegroundColor Red
} catch {
Write-Host "General exception: $($_.Exception.Message)"
}
我想'再/ Catch'是在PowerShell中處理錯誤的最好方法。處理任何其他「未發生」錯誤的目的是什麼?是否更好地處理實際上可能產生錯誤的代碼的任何部分? – Naigel
是的,當然,我會用我製作的任何腳本的主要部分來做到這一點。但是,將每個'Get-Date'或'Set-Variable'放在'Try/Catch'塊中會使腳本不必要很長時間。另外,這些命令是我從來沒有見過的執行失敗的,所以我專注於腳本中不穩定的部分,並在那裏使用'Try/Catch'。每一個其他的錯誤都可能是一個意想不到的錯誤,因爲我從字面上不會指望我的腳本崩潰。 – mariu5
我同意你的意見,那將是不必要的。那麼爲什麼在Get-Date或Set-Variable上捕獲不可能的錯誤呢?你如何有效地處理它們? – Naigel