首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

PowerShell 錯誤處理:Trap 與 Try-Catch 捕捉終止與非終止錯誤

     編輯:Java 相關知識

錯誤類型區分

  • 終止錯誤:如命令不存在、語法錯誤,腳本停止執行。
  • 非終止錯誤:如文件不存在、權限不足,默認只輸出錯誤流,腳本繼續執行。

Trap 捕捉終止錯誤示例

trap [Exception] {
    '在 trap 中捕捉到腳本異常'
    $_.Exception.Message
    continue
}
.\test.ps1   # 內容: Get-NonExistentCommand

輸出:在 trap 中捕捉到腳本異常 / The term 'Get-NonExistentCommand' is not recognized...

非終止錯誤默認不被 Trap 捕捉

# test.ps1 內容: dir D:\NonExistentPath
# 運行結果: 直接報錯紅字,trap 未觸發

解決方案:設置 $ErrorActionPreference = 'Stop'

trap [Exception] {
    '在 trap 中捕捉到腳本異常'
    $_.Exception.Message
    continue
}
$ErrorActionPreference = 'Stop'
.\test.ps1   # 內容: dir D:\NonExistentPath

輸出:在 trap 中捕捉到腳本異常 / Cannot find path 'D:\NonExistentPath' because it does not exist.

Try-Catch 配合 Stop 使用

try {
    dir D:\NonExistentPath -ErrorAction Stop
} catch {
    '在 catch 中捕捉到異常'
    $_.Exception.Message
}

最佳實踐建議

  1. 腳本開頭設置 $ErrorActionPreference = 'Stop' 統一將非終止錯誤提升為終止錯誤,便於集中捕捉。
  2. 關鍵操作(文件讀寫、網絡請求)顯式加 -ErrorAction Stop。
  3. 使用 trap 處理全局未捕獲異常,try/catch/finally 處理局部邏輯錯誤。
  4. continue 在 trap 中表示繼續執行下一條語句;break 表示退出當前作用域。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved