Ben Powershell ile tuhaf bir sorunla karşılaşmak ediyorum içeride doldurmamak. Bir catch bloğundaki bir Except'i yakalarım ancak global $ Error nesnesi doldurulmuyor.
function Bar
{
Foo
}
function Foo
{
try
{
$Error.Clear()
throw "Error!"
}
catch
{
"Caught an error - current error count $($Error.Count)"
}
finally
{
"Cleaning up - current error count $($Error.Count)"
}
}
Çıktı sen
Caught an error - current error count 1
Cleaning up - current error count 1
I sorun yaşıyorum kod Bar
ararsanız beklediğiniz gibi geçerli:bu beklendiği gibi davranır Önemsiz bir örnek şudur neredeyse aynıdır, ancak bir modülden Foo yükler. Bir modüle kapalı Foo kaydederseniz bu bir hata, ya da ben anlamıyorum sadece bir şey (! Eylem kitapta benim Powershell kontrol etmek zorunda kalacak)
olup olmadığından emin değil - Foo.psm1
function Foo
{
try
{
$Error.Clear()
throw "Error!"
}
catch
{
"Caught an error - current error count $($Error.Count)"
}
finally
{
"Cleaning up - current error count $($Error.Count)"
}
}
Export-ModuleMember -Function Foo
Sonra
Import-Module .\Foo.psm1
$Error.Clear()
"Current error count $($Error.Count)"
Foo
"Current error count $($Error.Count)"
Foo artık gördüğü
Current error count 0
Caught an error - current error count 0
Cleaning up - current error count 0
Current error count 1
Bildirimi ile bitirmek aşağıdaki gerçekleştirmek Ny değişiklikler $ Error yapılır. Böylece kodun modül-ification hata yayılma davranışını değiştiriyor. Bunun arkasındaki akıl yürütme ile kimse başlayabilir mi?
ben otomatik değişken $ _ aracılığıyla belirli yakalandı istisna almak unutmayın gerekirdi, ama çağrı yığını bu noktada tüm koleksiyonun da ele geçirmeleri arıyorum.
Yani benim ilk satırı yukarıdaki küresel $ Hata toplama değiştirilir, ancak modül $ Hata koleksiyon değil kapsamlı .. yanlıştır. –