2011-10-26 12 views
22

ब्लॉक को छोड़कर अजगर में बराबर है, तो मुझे त्रुटि संदेश मुद्रित करने के लिए चाहते हैं, लेकिन मैं इस कार्यक्रम को क्रियान्वित करने को रोकने के लिए नहीं करना चाहते हैं, मैं समझता हूँ कि मैं इसजावा के printStackTrace() अजगर

try: 
    1/0 
except: 
    print errorMessage 
की तरह कुछ करने के लिए है कि

में भाग को छोड़कर, मैं जावा के traceback.print_exc() पर एक नज़र और traceback मॉड्यूल के बाकी printStackTrace()

+2

एक अपवाद उठाया जा पहुंचाए बिना स्टैक ट्रेस मुद्रित करने के लिए, देखें: http://stackoverflow.com/questions/3925248/print-python-stack-trace-without- अपवाद-उठाया – Eddified

उत्तर

32

ले लो की तरह कुछ डाल करने के लिए देख रहा हूँ।

import traceback 

try: 
    1/0 
except: 
    print '>>> traceback <<<' 
    traceback.print_exc() 
    print '>>> end of traceback <<<' 

कुछ और उदाहरण हैं towards the end of the traceback documentation page

2

आप logging मॉड्यूल से logging.exception का भी उपयोग कर सकते हैं। यह मौजूदा अपवाद के स्टैकट्रैक को डिफ़ॉल्ट लॉगर में गंभीरता के संदेश के रूप में प्रिंट करेगा ERROR

लिंक: http://docs.python.org/2/library/logging.html#logging.Logger.exception

3

आप वास्तव में सिर्फ त्रुटि संदेश चाहते हैं, तो आप सिर्फ त्रुटि मुद्रित कर सकते हैं (ध्यान दें कि किस मैं सिवाय-कि अच्छा व्यवहार में अपवाद निर्दिष्ट करते हैं, त्रुटियों को पकड़ने से संबंधित सुझावों के pep8 देखें):

try: 
    1/0 
except Exception as e: 
    print e 

हालांकि, अगर आप stackstrace चाहते हैं, के रूप में @Eddified एक टिप्पणी में कहा, आप उदाहरण this answer में उपयोग कर सकते हैं। या अपने मामले के लिए और अधिक विशेष:

import traceback 
try: 
    1/0 
except Exception as e: 
    print e 
    traceback.print_stack() 
+0

बस एक हेडस्प, [print_stack] (http://docs.python.org/2/library/traceback.html#traceback.print_stack) केवल उस कोड के किसी भी लाइन से स्टैक प्रिंट करता है, जबकि [print_exc() अपवाद के स्टैक ट्रेस को प्रिंट करता है] (http://docs.python.org/2/library/traceback.html#traceback.print_exception)। – abelito