2011-09-01 9 views
5

मैं सिर्फ ट्विस्ट पर एप्लिकेशन लिखना सीख रहा हूं और इसलिए बहुत सारी गलतियां करता हूं।ट्विस्ट, डिफर्ड पूर्ण ट्रेसबैक

मान लीजिए कि एक कोड है:

d = defer.Deferred() 
d.addCallback(self.start_app) 
#d.addErrback(self.command_die) 
d.callback(0) 

def start_app(self, d): 
    #import os 
    return os.startfile(self.path) 

def command_die(self, d): 
    print ('com_die', d) 

हम os.startfile (self.path) में त्रुटि है और बिग Traceback:

Unhandled error in Deferred: 
Unhandled Error 
Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 542, in _runCallbacks 
    current.result = callback(current.result, *args, **kw) 
    File "C:/Dropbox/my_py/client3.py", line 100, in command_analiz 
    d.callback(i) 
    File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 361, in callback 
    self._startRunCallbacks(result) 
    File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 455, in _startRunCallbacks 
    self._runCallbacks() 
--- <exception caught here> --- 
    File "C:\Python27\lib\site-packages\twisted\internet\defer.py", line 542, in _runCallbacks 
    current.result = callback(current.result, *args, **kw) 
    File "C:/Dropbox/my_py/client3.py", line 353, in start_eve_d 
    return os.startfile(self.path) 
exceptions.NameError: global name 'os' is not defined 

अगर मैं # d.addErrback (आत्म uncomment। command_die)

हम थोड़ा "लॉग ऑन" प्रिंट ('com_die' से बनाने के लिए, घ):

('com_die', <twisted.python.failure.Failure <type 'exceptions.NameError'>>) 

क्या डिज़ाइन समय पर पूरा लॉग \ TraceBack प्राप्त करने का कोई तरीका है?

पल मुझे यह समझाया गया है, जहां एक नया त्रुटि थी, यह addErrorback `रों

उत्तर

4

मुड़ विफलता वस्तु सब कुछ आप की जरूरत है टिप्पणी करने के लिए आवश्यक है। यह बहुत अच्छी तरह से टिप्पणी की है स्रोत http://twistedmatrix.com/trac/browser/tags/releases/twisted-8.2.0/twisted/python/failure.py#L121 में अन्य विकल्पों के लिए

>>> from twisted.internet.defer import Deferred as D 
>>> def start_app(_): 
...  #import os 
...  return os.startfile('sasa') 
... 
... def command_die(err): 
...  err.printTraceback() 
... 
...  
... d = D() 
... d.addCallback(start_app) 
... d.addErrback(command_die) 
... d.callback(0) 
Traceback (most recent call last): 
    File "C:\Users\Pilyavskiy\AppData\Local\DreamPie\share\dreampie\subp-py2\dreampielib\subprocess\__init__.py", line 324, in execute 
    exec codeob in self.locs 
    File "<pyshell#3>", line 12, in <module> 
    d.callback(0) 
    File "C:\pill\Python27\lib\site-packages\twisted\internet\defer.py", line 361, in callback 
    self._startRunCallbacks(result) 
    File "C:\pill\Python27\lib\site-packages\twisted\internet\defer.py", line 455, in _startRunCallbacks 
    self._runCallbacks() 
--- <exception caught here> --- 
    File "C:\pill\Python27\lib\site-packages\twisted\internet\defer.py", line 542, in _runCallbacks 
    current.result = callback(current.result, *args, **kw) 
    File "<pyshell#3>", line 3, in start_app 
    return os.startfile('sasa') 
exceptions.NameError: global name 'os' is not defined 

देखो: हो रही के लिए अच्छा ट्रैस बैक printTraceback() विधि का उपयोग कर प्रयास करें।

पुनश्च: नाम ज्यादातर के लिए प्रयोग किया जाता है खुद को टाल, परिणाम/त्रुटि यह रेस की तरह कुछ का उपयोग करने के लिए बेहतर है/गलती आदि

संबंधित मुद्दे