e.printStackTrace पायथन में बराबर
जावा में, यह निम्नलिखित ( डॉक्स ) करता है:
public void printStackTrace()
इस फेंकने योग्य प्रिंट और मानक त्रुटि धारा के लिए अपनी backtrace ...
यह इस तरह प्रयोग किया जाता है:
try
{
// code that may raise an error
}
catch (IOException e)
{
// exception handling
e.printStackTrace();
}
जावा में, मानक त्रुटि स्ट्रीम अप्रभावित है ताकि आउटपुट तुरंत आ जाए।
पायथन 2 में समान शब्दार्थ हैं:
import traceback
import sys
try: # code that may raise an error
pass
except IOError as e: # exception handling
# in Python 2, stderr is also unbuffered
print >> sys.stderr, traceback.format_exc()
# in Python 2, you can also from __future__ import print_function
print(traceback.format_exc(), file=sys.stderr)
# or as the top answer here demonstrates, use:
traceback.print_exc()
# which also uses stderr.
अजगर ३
पायथन 3 में, हम अपवाद ऑब्जेक्ट से सीधे ट्रेसबैक प्राप्त कर सकते हैं (जो कि थ्रेडेड कोड के लिए बेहतर व्यवहार करता है)। इसके अलावा, stderr लाइन-बफ़र्ड है , लेकिन प्रिंट फ़ंक्शन को एक फ्लश तर्क मिलता है, इसलिए इसे तुरंत stderr पर प्रिंट किया जाएगा:
print(traceback.format_exception(None, # <- type(e) by docs, but ignored
e, e.__traceback__),
file=sys.stderr, flush=True)
निष्कर्ष:
पायथन 3 में, इसलिए, traceback.print_exc()
हालांकि यह sys.stderr
डिफ़ॉल्ट रूप से उपयोग करता है , आउटपुट को बफर करेगा, और आप संभवतः इसे खो सकते हैं। तो पायथन 3 में, जितना संभव हो उतना समान शब्दार्थ प्राप्त करने के लिए, के print
साथ उपयोग करें flush=True
।
format_exc
इसके बजाय एक स्ट्रिंग प्राप्त कर सकते हैं ।