Ric*_*ard 4 python error-handling
下面是一个代码片段,其中包含我正在运行的python脚本化Windows服务的错误跟踪.它似乎在Windows XP上的python 2.7中正常工作,但我使用的生产机器在Windows Server 2003上运行python 2.5.我遇到的主要错误'error' object has no attribute 'errno'
是我做的事情对于适用于2.7的python 2.5来说是根本错误的吗?
代码剪辑:
try:
if s == None:
s = self.connect()
char = s.recv(1)
line += char
except socket.timeout:
if s != None:
s.close()
s = None
continue
except socket.error, socket_error:
servicemanager.LogErrorMsg(traceback.format_exc())
if socket_error.errno == errno.ECONNREFUSED:
if s != None:
s.close()
time.sleep(60)
s =None
continue
else:
if s != None:
s.close()
os._exit(-1)
else:
pass
Run Code Online (Sandbox Code Playgroud)
错误跟踪剪辑:
if socket_error.errno == errno.ECONNREFUSED:
AttributeError: 'error' object has no attribute 'errno'
%2: %3
Run Code Online (Sandbox Code Playgroud)
在2.6版中更改:socket.error现在是IOError的子类.
IOError的子类有一个errno
成员.
如果你想在python <2.6中获得与你的错误相关的errno,(并且假设这里描述的方式对于引发socket.error有效)你必须从args
异常的属性中获取它:
except socket.error, socket_error:
if socket_error.args[0] == errno.ECONNREFUSED:
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1262 次 |
最近记录: |