2008-10-01 16 views
71

का उपयोग करना मैं त्रुटियों को पकड़ने और उन्हें लॉग इन करने के लिए वीबीस्क्रिप्ट का उपयोग करना चाहता हूं (यानी त्रुटि "कुछ लॉग करें") फिर स्क्रिप्ट की अगली पंक्ति फिर से शुरू करें।वीबीस्क्रिप्ट - त्रुटि प्रबंधन

उदाहरण के लिए,

 
On Error Resume Next 
'Do Step 1 
'Do Step 2 
'Do Step 3 

चरण 1, मैं यह है कि त्रुटि लॉग इन करें (या इसके साथ अन्य कस्टम कार्य करते हैं) तो कदम 2. बजे फिर से शुरू यह संभव है करना चाहते हैं पर एक त्रुटि तब होती है जब? और मैं इसे कैसे कार्यान्वित कर सकता हूं?

संपादित करें: क्या मैं ऐसा कुछ कर सकता हूं?

 
On Error Resume myErrCatch 
'Do step 1 
'Do step 2 
'Do step 3 

myErrCatch: 
'log error 
Resume Next 
+1

डायलन की प्रतिक्रिया उतनी ही अच्छी है जितनी वीबी त्रुटि प्रबंधन विभाग में हो जाती है। यही कारण है कि मैं हमेशा जावास्क्रिप्ट का उपयोग करता था जब मैं इससे दूर हो सकता था। – wcm

उत्तर

134

VBScript फेंकने या अपवाद को पकड़ने का बोध भी नहीं है, लेकिन क्रम में एक वैश्विक अरे उद्देश्य यह है कि प्रदर्शन पिछले आपरेशन के परिणाम शामिल हैं प्रदान करता है। आपको स्पष्ट रूप से जांचना होगा कि प्रत्येक ऑपरेशन के बाद Err.Number प्रॉपर्टी शून्य नहीं है या नहीं।

On Error Resume Next 

DoStep1 

If Err.Number <> 0 Then 
    WScript.Echo "Error in DoStep1: " & Err.Description 
    Err.Clear 
End If 

DoStep2 

If Err.Number <> 0 Then 
    WScript.Echo "Error in DoStop2:" & Err.Description 
    Err.Clear 
End If 

'If you no longer want to continue following an error after that block's completed, 
'call this. 
On Error Goto 0 

"पर त्रुटि गोटो [लेबल]" वाक्य रचना अनुप्रयोग (VBA) के लिए विजुअल बेसिक और विजुअल बेसिक के द्वारा समर्थित है, लेकिन VBScript इस भाषा सुविधा का समर्थन नहीं करता है ताकि आप त्रुटि पर उपयोग करने के लिए फिर से शुरू के रूप में अगले है ऊपर वर्णित।

+9

:(... मुझे बहुत बुरा लगता है ... – apandit

+2

आप WScript.Echo को फ़ंक्शन या सब कॉल करने के लिए अगर कथन में बदल सकते हैं, जो बदले में एप्लिकेशन से बाहर निकल सकता है, त्रुटि लॉग कर सकता है, आदि – StormPooper

+0

"reuslts शामिल हैं आखिरी ऑपरेशन का प्रदर्शन किया गया। "क्या यह सच है? ऐसा लगता है कि यह एक आखिरी त्रुटि है जो एक बड़ा अंतर है। –

6

ध्यान दें कि On Error Resume Next वैश्विक स्तर पर सेट नहीं है। आप कोड के अपने असुरक्षित हिस्से को एक फ़ंक्शन में डाल सकते हैं, जो त्रुटि होने पर तत्काल बाधित हो जाएगा, और इस फ़ंक्शन को उप-संबंधित OERN कथन से कॉल करें।

ErrCatch() 

Sub ErrCatch() 
    Dim Res, CurrentStep 

    On Error Resume Next 

    Res = UnSafeCode(20, CurrentStep) 
    MsgBox "ErrStep " & CurrentStep & vbCrLf & Err.Description 

End Sub 

Function UnSafeCode(Arg, ErrStep) 

    ErrStep = 1 
    UnSafeCode = 1/(Arg - 10) 

    ErrStep = 2 
    UnSafeCode = 1/(Arg - 20) 

    ErrStep = 3 
    UnSafeCode = 1/(Arg - 30) 

    ErrStep = 0 
End Function 
+0

स्पष्ट पूर्व नहीं पर्याप्त मैंने कभी देखा है लेकिन मुझे अवधारणा मिलती है। – Lankymart

+4

@ लंकीमार्ट क्या आप एक स्पष्ट उदाहरण को जोड़ना चाहते हैं जिसे आपने देखा है, या इसके बजाय सुझाव है कि ओमेगास्ट्रिप्स इस उदाहरण को कैसे सुधार सकते हैं? – Dominick

+2

एक सेकंड के लिए, मुझे लगता है कि मुझे एक नया सॉफ्टवेयर इंजीनियरिंग प्रतिमान याद आया जिसे "ओमेगास्ट्रिप्स" कहा जाता है – TheBlastOne

संबंधित मुद्दे