Đây là câu hỏi thực hành tốt nhất mà tôi cho là.Xử lý lỗi PowerShell với chức năng
Khi thiết kế các hàm sẽ được sử dụng trong các tập lệnh, cách tốt nhất để xử lý các lỗi có thể xảy ra trong hàm là gì?
Ví dụ, chúng ta có một chức năng cơ bản mà không X và Y:
Function Test-Function
{
Try
{
<# Something in here that would generate an error #>
}
Catch
{
Throw
}
Return $someReturnResultIWantInMyScript
}
Kịch bản của tôi gọi chức năng này:
Try
{
$ValueIWantFromFunction = Test-Function
}
Catch
{
<# Do something here #>
}
Nếu Test-Function
lượt truy cập một lỗi chấm dứt, nó sẽ ném cho người gọi. Các Try/Catch
xung quanh cuộc gọi chức năng của tôi trong kịch bản sẽ nhận được lỗi này và nhấn bắt riêng của nó. Sau đó tôi có thể quyết định phải làm gì.
Nếu tôi không ném lỗi trong hàm, tập lệnh sẽ không thấy lỗi kết thúc và sau đó $ValueIWantFromFunction
của tôi có thể chứa $Null
hoặc nội dung nào đó không hữu ích.
Đây có phải là cách xử lý lỗi tốt với các chức năng và các cuộc gọi hàm trong các tập lệnh không? Có cách nào tốt hơn?
Tôi sẽ nói nó phụ thuộc vào trường hợp sử dụng. Đối với hầu hết các phần, các tùy chọn này tồn tại để cung cấp cho bạn lựa chọn. Thực hành tốt nhất là tránh kích hoạt các lỗi đó nếu nó có thể tránh được với logic điều kiện khác. – Matt
Lỗi chấm dứt sẽ chuyển đến người gọi bất kể thử/bắt của bạn, trừ khi thử/bắt của bạn đang chặn nó. – TheIncorrigible1
Vậy làm cách nào để xử lý lỗi nếu hàm cũng trả về một giá trị (giả sử nó thành công?) – PnP