7
क्या अपवाद उठाते समय कस्टम स्थितियां बनाना संभव है? निम्न उदाहरण पर विचार करें:PostgreSQL कस्टम अपवाद शर्तें
BEGIN
y := x/0;
EXCEPTION
WHEN division_by_zero THEN
RAISE NOTICE 'caught division_by_zero';
RETURN x;
END;
यहाँ मैं 'division_by_zero' शर्त का उपयोग अपवाद को पकड़ने के लिए।
BEGIN
[...]
RAISE custom_condition;
EXCEPTION
WHEN custom_condition THEN
[...]
END;
ताकि मैं संभव मानक अपवादों के साथ हस्तक्षेप नहीं करते: मैं क्या करना चाहते हैं क्या कुछ इस तरह है। मैं बस वाई कर सकता था: = 1/0; और division_by_zero पकड़ो, लेकिन यह सही नहीं लग रहा है।
धन्यवाद! यह एक सुधार के साथ काम करता है - * त्रुटि * पैरामीटर बिल्कुल पांच अंक/अपरकेस ASCII वर्ण होना चाहिए, अन्यथा यह एक त्रुटि ('अवैध SQLSTATE कोड') का कारण बन जाएगा। यहां आपके लिंक से एक नोट दिया गया है: 'नोट: SQLSTATE कोड द्वारा त्रुटि कोड निर्दिष्ट करते समय, आप पूर्वनिर्धारित त्रुटि कोड तक सीमित नहीं हैं, लेकिन पांच अंकों और/या ऊपरी-मामले ASCII अक्षरों वाले किसी भी त्रुटि कोड का चयन कर सकते हैं, अन्य 00000 से अधिक। यह अनुशंसा की जाती है कि आप तीन शून्यों में समाप्त होने वाले त्रुटि कोड फेंकने से बचें, क्योंकि ये श्रेणी कोड हैं और केवल पूरी श्रेणी को फँसाने से फंस सकते हैं। – Snifff
@Sniff: धन्यवाद - मैंने त्रुटि कोड के मामले को सही किया है – Tometzky
@Tometzky: upgrade.diagnostic के अंतर्गत कौन सी संपत्ति 'बार निषिद्ध है' शो के अंतर्गत है? क्या यह MESSAGE_TEXT या PG_EXCEPTION_DETAIL या PG_EXCEPTION_HINT है? (दस्तावेज़: http://goo.gl/F5w1y) – obimod