2012-07-17 14 views
9

मैं वास्तव में यह कैसे कहने के लिए नहीं जानता कि मुद्रण नहीं, लेकिन जब मैं अजगर 3.2 में अपवाद बढ़ा, '\ n' नहीं पार्स कर रहे हैं ...अजगर 3 अपवाद नई लाइन

यहाँ एक उदाहरण है :

class ParserError(Exception): 
    def __init__(self, message): 
      super().__init__(self, message) 

try: 
    raise ParserError("This should have\na line break") 
except ParserError as err: 
    print(err) 

यह इस तरह काम करता है:

$ ./test.py 
(ParserError(...), 'This should have\na line break') 

मुझे यकीन है कि नई लाइनों नई लाइनों के रूप में मुद्रित कर रहे हैं कैसे कर सकता हूँ?

class ParserError(Exception): 
    pass 

या

print(err.args[1]) 
+2

प्रिंट (err.message) है यह करते हैं? –

+1

नहीं, ऑब्जेक्ट में कोई विशेषता नहीं है 'संदेश' – user1530147

+1

अगर आप '__init__' विधि से छुटकारा पाएं, तो अपवाद टेक्स्ट आपके कोड के साथ मुद्रित होता है, और नई लाइन सही ढंग से मुद्रित होती है। – geoffspear

उत्तर

5

आह, err.message 2.6 में पदावनत किया गया था - तो नहीं रह गया है वर्तमान, इसलिए ...

print(err.args[1]) 
+1

' प्रिंट (err.args [1]) 'यहाँ, नहीं? – DSM

+0

2 समाधानों में से कोई भी काम नहीं कर रहा है ... – user1530147

+0

रुको, तर्क [1] काम करता है !! – user1530147

2

यहाँ क्या हो रहा है कि आपका संदेश स्ट्रिंग के reprprint() करने के लिए पूरे Exception वस्तु गुजर के हिस्से के रूप में मुद्रित किया जा रहा है, इसलिए न्यू लाइन \n में वापस बदला जा रहा है है। यदि आप व्यक्तिगत स्ट्रिंग print वास्तविक स्ट्रिंग, वास्तविक न्यूलाइन प्रिंट करेंगे।

+0

मैंने 'err.message' का उल्लेख किया लेकिन टिप्पणी का जवाब" कोई विशेषता नहीं है " –

+0

जब मैं 'प्रिंट (err.message)' कोशिश करता हूं, तो मुझे 'ParserError' ऑब्जेक्ट में कोई विशेषता नहीं है 'संदेश' – Levon