2012-12-11 21 views
31

क्या मुझे अपवाद हैंडलिंग को उसी तरह से करना चाहिए जैसे नेट?पावरहेल में कैच ब्लॉक से अपवाद कैसे हटाया जा सकता है?

फिर, मैं पावरहेल में कैच ब्लॉक से अपवाद कैसे दोबारा फेंक सकता हूं?

'फेंक' enoungh या 'फेंक $ _' बेहतर होगा? PowerShell में

उत्तर

55

throw कीवर्ड अलग ढंग से व्यवहार करती है तो .net कार्यान्वयन: .net में आप केवल System.Exceptions खुद या उसके उत्तराधिकारी, लेकिन PowerShell में फेंक कर सकते हैं, आप कुछ भी फेंक कर सकते हैं और है कि स्वचालित रूप से एक System.Management.Automation.RuntimeException में लपेटा जाता है। स्निपेट here देखें। आप फिर से फेंक मूल अपवाद चाहते हैं

आप इस्तेमाल कर सकते हैं throw (सबसे सामान्य), या throw $_, या throw $_.Exception

पुनश्च: अंदर catch चर $_ अपने आप में अपवाद नहीं है, लेकिन System.Management.Automation.ErrorRecord कि अपवाद शामिल

+17

नोट: सी # में, 'फेंक' फॉर्म मूल अपवाद के संदर्भ (स्रोत स्थान) रखता है, लेकिन दुर्भाग्य से यह PowerShell में ऐसा प्रतीत नहीं होता है। – brianary