खोज…


परिचय

यह विषय PowerShell में त्रुटि प्रकार और त्रुटि हैंडलिंग के बारे में चर्चा करता है।

त्रुटि प्रकार

एक त्रुटि एक त्रुटि है, कोई आश्चर्यचकित हो सकता है कि इसमें कैसे प्रकार हो सकते हैं। खैर, शक्तियां त्रुटि के साथ मोटे तौर पर दो मानदंडों में गिर जाती हैं,

  • समाप्ति त्रुटि
  • गैर-समाप्ति त्रुटि

जैसा कि नाम कहता है कि समाप्ति त्रुटियां निष्पादन को समाप्त कर देंगी और एक गैर-समाप्तिकारी त्रुटियां निष्पादन को अगले कथन पर जारी रखेंगी।

यह सही है कि $ ErrorActionPreference मान डिफ़ॉल्ट है (जारी रखें)। $ ErrorActionPreference एक पूर्वगामी चर है जो "गैर-समाप्ति" त्रुटि के मामले में शक्तियों को बताता है कि क्या करना है।

समाप्ति त्रुटि

एक समाप्ति त्रुटि को नीचे दिए गए के रूप में एक विशिष्ट कोशिश के साथ संभाला जा सकता है

Try
{
    Write-Host "Attempting Divide By Zero"
    1/0
}
Catch
{
    Write-Host "A Terminating Error: Divide by Zero Caught!" 
}

उपरोक्त स्निपेट निष्पादित होगा और त्रुटि को पकड़ ब्लॉक के माध्यम से पकड़ा जाएगा।

गैर-समाप्ति त्रुटि

दूसरे हाथ में एक गैर-समाप्ति त्रुटि डिफ़ॉल्ट रूप से कैच ब्लॉक में नहीं पकड़ी जाएगी। गैर-समाप्ति त्रुटि के पीछे का कारण एक महत्वपूर्ण त्रुटि नहीं माना जाता है।

Try
{
    Stop-Process -Id 123456
}
Catch
{
    Write-Host "Non-Terminating Error: Invalid Process ID"
}

यदि आप उपरोक्त लाइन को निष्पादित करते हैं, तो आप कैच ब्लॉक से आउटपुट प्राप्त नहीं करेंगे क्योंकि त्रुटि महत्वपूर्ण नहीं मानी जाती है और निष्पादन केवल अगले कमांड से जारी रहेगा। हालाँकि, त्रुटि कंसोल में प्रदर्शित किया जाएगा। एक गैर-समाप्ति त्रुटि को संभालने के लिए, आपको त्रुटि वरीयता को बदलना होगा।

Try
{
    Stop-Process -Id 123456 -ErrorAction Stop
}
Catch
{
    "Non-Terminating Error: Invalid Process ID"
}

अब, अद्यतन त्रुटि वरीयता के साथ, इस त्रुटि को एक समाप्ति त्रुटि माना जाएगा और इसे कैच ब्लॉक में पकड़ा जाएगा।

समापन समाप्ति और गैर-समाप्ति त्रुटियां:

लिखो-त्रुटि cmdlet केवल इनवॉइस होस्ट प्रोग्राम के लिए त्रुटि लिखता है। यह निष्पादन को नहीं रोकता है। जहां फेंकना आपको एक समाप्ति त्रुटि देगा और निष्पादन को रोक देगा

Write-host "Going to try a non terminating Error "
Write-Error "Non terminating" 
Write-host "Going to try a terminating Error "
throw "Terminating Error " 
Write-host "This Line wont be displayed" 


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow