मेरे पास एक कोशिश खंड में एक कमांड है जो मुझे पता है कि अपवाद फेंकता है। मैं इसे "छोड़कर" खंड में पकड़ने की कोशिश कर रहा हूं, लेकिन छोड़कर खंड अपवाद के अस्तित्व को नहीं पहचानता है। जब मैं एक कोशिश में आदेश डाल/कि सूची में पहले फाइल में निर्माण को छोड़करपायथन अपवाद नहीं पहचाना गया; सिवाय इसके साथ कैसे संभालें?
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\Andy\software\Turkeys\actions.py", line 234, in annotate
annotation=annotator.ncbo_annotate(thing)
File "C:\Users\Andy\software\Turkeys\annotator.py", line 49, in ncbo_annotate
fh = urllib2.urlopen(submitUrl, postData)
File "C:\32Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\32Python27\lib\urllib2.py", line 406, in open
response = meth(req, response)
File "C:\32Python27\lib\urllib2.py", line 519, in http_response
'http', request, response, code, msg, hdrs)
File "C:\32Python27\lib\urllib2.py", line 444, in error
return self._call_chain(*args)
File "C:\32Python27\lib\urllib2.py", line 378, in _call_chain
result = func(*args)
File "C:\32Python27\lib\urllib2.py", line 527, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 500: Internal Server Error
The,: अपवाद है, जब बिना क्रिया (यानी एक कोशिश खंड में संलग्न नहीं), इस तरह इंटरैक्टिव विंडो में लग रहा है "actions.py", इस तरह:
try:
annotation=annotator.ncbo_annotate(thing)
except HTTPError:
...do some things with this
मैं उम्मीद होती है कि इसके बाद के संस्करण खंड "HTTPError: HTTP त्रुटि 500: आंतरिक सर्वर त्रुटि" पकड़ उत्पादन किया जा रहा है जब मैं ncbo_annotate समारोह चलाने के लिए, लेकिन इसके बजाय जब मैं ऊपर चलाएं, मुझे एक त्रुटि मिल रही है कि वैश्विक नाम "HTTPError" परिभाषित नहीं किया गया है:
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Users\Andy\software\Turkeys\actions.py", line 235, in annotate
except HTTPError:
NameError: global name 'HTTPError' is not defined
तो सौदा क्या है? मैंने सोचा कि पायथन अपवाद उठाता है जब तक कि इसे एक कोशिश खंड में एक हैंडलर नहीं मिल जाता है या इसे बिना किसी परेशान कर देता है। मेरे कोड को कोई विचार नहीं है कि HTTPError क्या है, या वैकल्पिक रूप से, मैं इसे कैसे बता सकता हूं कि यह क्या है ताकि यह इसे संभाल सके?
एक और बात आप कर सकते हैं HTTPError से पहले अपने नाम स्थान डाल दिया जाता है, खंड को छोड़कर इस तरह से लेखन: urllib2.HTTPError को छोड़कर ':' – gerlos