2009-01-23 6 views
32

त्रुटि प्रबंधन के लिए ASP Classic में क्या विकल्प हैं?एएसपी क्लासिक में त्रुटि प्रबंधन की तरह प्रयास करने की कोशिश है?

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

मैं Mail.SendMail समारोह का उपयोग कर रहा हूँ, लेकिन यह काम नहीं करता जब परीक्षण सर्वर पर स्विच कर देंगे, जो सामान्य है। मैं जांचना चाहता हूं कि मेलिंग संभव है, अगर नहीं तो जारी रखें और/या एक संदेश दिखाएं।

कोई विचार? के बाद से मैं एएसपी देश में था

उत्तर

43

दो दृष्टिकोण हैं, आप जेस्क्रिप्ट या वीबीस्क्रिप्ट में कोड कर सकते हैं जिसमें निर्माण हो या आप इसे अपने कोड में फज कर सकते हैं।

JScript का उपयोग करके आप निर्माण के निम्नलिखित प्रकार का उपयोग करेंगे: बिंदु पर अगले त्रुटि को फिर से शुरू पर का उपयोग करके

<script language="jscript" runat="server"> 
try { 
     tryStatements} 
catch(exception){ 
     catchStatements} 
finally { 
     finallyStatements} 
</script> 

अपने ASP कोड में आप इसे ठगना आप एक कोशिश और जाँच err.Number होगा कैच के बिंदु पर:

<% 
Dim i 
' Turn on error Handling 
On Error Resume Next 


'Code here that you want to catch errors from 

' Error Handler 
If Err.Number <> 0 Then 
    ' Error Occurred/Trap it 
    On Error Goto 0 ' But don't let other errors hide! 
    ' Code to cope with the error here 
End If 
On Error Goto 0 ' Reset error handling. 

%> 
+2

+1। जावास्क्रिप्ट। यदि आपको इसकी आवश्यकता है, तो वीबीस्क्रिप्ट जावास्क्रिप्ट का उपयोग करें। – AnthonyWJones

2

थोड़ी देर गया है, लेकिन IIRC वहाँ कई तरीकों से है: (अच्छा लेख here here)

try catch finally यथोचित VBS में नकली किया जा सकता है और वहाँ एक घटना बुलाया class_terminate आप देख सकते हैं है और वैश्विक स्तर पर अपवादों को पकड़ें। फिर आपकी स्क्रिप्टिंग भाषा बदलने की संभावना है ...

+1

अच्छा पता करने के लिए के तल पर निम्न कोड जोड़ें, लेकिन बदसूरत bejeebus thats। मैं स्क्रिप्टिंग भाषा स्विच करूँगा। –

+0

मुझे इसके बारे में बताएं :-) मुझे कुछ पुरानी परियोजनाओं को बनाए रखना है और एएसपी में उन मानक सुविधाओं की बहुत सारी कमी है, जो आज भी अन्य स्क्रिप्टिंग भाषाओं में हैं ... –

+0

अंततः निश्चित रूप से प्रयास करें VNOScript में _NOT_ मौजूद है। यह आलेख एक ही लक्ष्य को प्राप्त करने के साधनों का प्रदर्शन करता है लेकिन वास्तव में वीबीएस का वर्णन करने का इसका शायद ही कारण है क्योंकि वास्तव में अंततः प्रयास करना है। – AnthonyWJones

1

कुछ परिदृश्य हमेशा डेवलपर्स को स्क्रिप्टिंग भाषा स्विच करने की अनुमति नहीं देते हैं।

मेरी वरीयता निश्चित रूप से जावास्क्रिप्ट के लिए है (और मैंने इसे नई परियोजनाओं में उपयोग किया है)। हालांकि, पुरानी परियोजनाओं को बनाए रखना अभी भी आवश्यक और आवश्यक है। दुर्भाग्यवश, ये वीबीस्क्रिप्ट में लिखे गए हैं।

तो हालांकि यह समाधान सही "कोशिश/पकड़" कार्यक्षमता प्रदान नहीं करता है, परिणाम भी वही है, और यह काम करने के लिए मेरे लिए काफी अच्छा है।

7

एक नहीं बल्कि अच्छा तरीका COM कक्षाएं लापता के लिए इस संभाल करने के लिए:

Dim o:Set o = Nothing 
On Error Resume Next 
Set o = CreateObject("foo.bar") 
On Error Goto 0 
If o Is Nothing Then 
    Response.Write "Oups, foo.bar isn't installed on this server!" 
Else 
    Response.Write "Foo bar found, yay." 
End If 
4

Anytone के लिए जो अधिक आधुनिक भाषाओं के रूप में एएसपी में काम किया है और साथ ही, सवाल एक व्यंग्य भड़काने जाएगा। एक कस्टम त्रुटि हैंडलर (500 से 100 त्रुटियों को संभालने के लिए आईआईएस में स्थापित) का उपयोग करके मेरे अनुभव में एएसपी त्रुटि हैंडलिंग के लिए सबसे अच्छा विकल्प है। यह आलेख दृष्टिकोण का वर्णन करता है और यहां तक ​​कि आपको कुछ नमूना कोड/डेटाबेस तालिका परिभाषा भी देता है।

http://www.15seconds.com/issue/020821.htm

4

बयान त्रुटि को फिर से शुरू अगला हम क्या मान्य करने के लिए चाहते हैं के शीर्ष पर रखा जाना चाहिए। "पर त्रुटि फिर से शुरू करें अगला" वास्तव में त्रुटि बंद से निपटने मुड़ता: Wolfwyrd के anwer के बारे में

If Err.Number <> 0 then 

    'Your error message goes here' 

    End if 
9

:

On Error Resume Next 
    'Your code logic is here 

तो जैसे बयान के साथ समाप्त! पर नहीं।त्रुटि गोटो 0 पर त्रुटि-हैंडलिंग वापस चालू हो जाती है क्योंकि कम से कम, हम चाहते हैं कि मशीन इसे पकड़ ले, अगर हमने इसे स्वयं में नहीं लिखा है। बंद = इसे संभालने के लिए इसे छोड़कर। वाक्यांश याद है, "Err.Number <> 0 तब तो" केवल चालू होने वाले अधिकांश पिछले त्रुटि को संदर्भित करता है:

आप त्रुटि पर उपयोग करते हैं फिर से शुरू करें इसके बाद, आप आप कितना कोड शामिल करने के बाद इस बारे में सावधान रहने की जरूरत है।

यदि "ऑन एरर रेज़्यूमे नेक्स्ट" के बाद कोड के आपके ब्लॉक में कई जगहें हैं जहां आप उचित रूप से असफल होने की उम्मीद कर सकते हैं, तो आपको "यदि Err.number <> 0" प्रत्येक संभावित विफलता के बाद " निष्पादन की जांच करने के लिए लाइनें।

अन्यथा, "त्रुटि फिर से शुरू करने के बाद" का अर्थ यह है कि यह क्या कहता है - आपका कोड उतनी लाइनों पर असफल हो सकता है जितना इसे पसंद करता है और निष्पादन साथ ही जारी रहेगा। यही कारण है कि यह गधे में दर्द है।

7

1) जोड़े On Error Resume Next पेज

2) के शीर्ष पर पेज

If Err.Number <> 0 Then 

    Response.Write (Err.Description) 

    Response.End 

End If 

On Error GoTo 0 
संबंधित मुद्दे