मैं PowerShell के साथ एक अजीब समस्या का सामना कर रहा हूँ अंदर पॉप्युलेट नहीं। मैं कैच ब्लॉक में अपवाद पकड़ रहा हूं, लेकिन वैश्विक $ त्रुटि ऑब्जेक्ट पॉप्युलेट नहीं किया जा रहा है।
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)"
}
}
आउटपुट के रूप में आप अगर आप बार
Caught an error - current error count 1
Cleaning up - current error count 1
कोड रहा है में परेशानी आ रही फोन उम्मीद होती है:
एक तुच्छ उदाहरण के लिए जहां यह अपेक्षा के अनुरूप व्यवहार करेंगे यह है लगभग समान, सिवाय इसके कि यह एक मॉड्यूल से फू लोड करता है। अगर यह एक बग, या बस कुछ मुझे समझ नहीं आता (! कार्रवाई पुस्तक में मेरी Powershell जाँच करना होगा)
मैं एक मॉड्यूल के लिए रवाना फू सहेजते हैं है सुनिश्चित नहीं हैं - 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
तो मैं निम्नलिखित
Import-Module .\Foo.psm1
$Error.Clear()
"Current error count $($Error.Count)"
Foo
"Current error count $($Error.Count)"
मैं साथ
Current error count 0
Caught an error - current error count 0
Cleaning up - current error count 0
Current error count 1
सूचना है कि फू अब एक देखता अंत प्रदर्शन $ त्रुटि में किए गए परिवर्तन। तो कोड का मॉड्यूल-इफ़िकेशन त्रुटि प्रसार व्यवहार बदल रहा है। क्या कोई इस के पीछे तर्क के साथ झुका सकता है?
मैं नोट करना चाहिए कि मैं स्वत: चर $ _ के माध्यम से विशिष्ट पकड़ा अपवाद पर प्राप्त कर सकते हैं, लेकिन मैं कॉल स्टैक में इस बिंदु पर पूरे संग्रह पर भी नियंत्रण प्राप्त करने के लिए देख रहा हूँ।
तो मेरी पहली रेखा से ऊपर गलत है .. वैश्विक $ त्रुटि संग्रह संशोधित किया गया है, लेकिन मॉड्यूल scoped $ त्रुटि संग्रह नहीं है। –