免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2240 | 回复: 0
打印 上一主题 下一主题

python语言中socket操作的异常处理 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-12-22 13:03 |只看该作者 |倒序浏览

                                最近使用python开发一个基于socket通讯的小程序,为了检测调用socket的函数时可能出现的异常,需要对函数调用进行异常保护处理。于是写了类似如下的代码:
try:
    sock.connect(('192.168.1.1', 1024))
except:
    (ErrorType, ErrorValue, ErrorTB) = sys.exc_info()
    print "Connect server failed: ", ErrorValue
如果出现connect调用失败,则打印出连接失败的原因,如下所示:
Connect server failed:  (10061, 'Connection refused')
看到这,可能熟悉C语言开发的人对10061都对这条错误消息感到眼熟,10061就是经常用到的errno,而后面的消息则是对应的错误消息。因此,我们可以对异常消息做一下处理:
               
                try:
    sock.connect(('192.168.1.1', 1024))
except:
    (ErrorType, ErrorValue, ErrorTB) = sys.exc_info()
    (errno, err_msg) = ErrorValue
    print "Connect server failed: %s, errno=%d" % (err_msg, errno)
此时,输出结果如下所示:
Connect server failed: Connection refused, errno=10061
进一步分析一下,打印出此时的sys.exc_info():
(class 'socket.error'>, error(10061, 'Connection refused'), traceback object at 0x00D37CB0>)
可以发现此处的异常是class socket.error,对程序作如下的修改:
try:
    sock.connect(('192.168.1.1', 1024))
except socket.error, arg:
    (errno, err_msg) = arg
    print "Connect server failed: %s, errno=%d" % (err_msg, errno)
根据上面的示例,我们可以针对所有的socket函数调用处理异常socket.error,以保证程序的运行正常。
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/48729/showart_448060.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP