python - 了解 Python 中的错误代码并使用有意义的错误名称

标签 python error-handling

我了解 python 错误处理的基本 try: except: finally: 语法。我不明白的是如何找到正确的错误名称来制作可读代码。

例如:

try:
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     s.connect((HOST, PORT))
     s.settimeout(60)               
     char = s.recv(1)

except socket.timeout:
    pass

因此,如果套接字引发超时,则会捕获错误。如果我正在寻找一个被拒绝的连接怎么办。我知道错误号是 10061。我应该在文档中的什么地方找到一个有意义的全名,例如超时。是否有类似的地方可以寻找其他 python 模块?我知道这是一个新手问题,但一段时间以来我一直在错误处理我的代码,但实际上并不知道在哪里寻找错误描述和名称。

编辑:

感谢您的所有回复。

except socket.error, exception:
    if exception.errno == ETIMEDOUT:
         pass

达到与

相同的结果
except socket.timeout:
    pass

最佳答案

要实现您想要的效果,您必须获取引发的异常,提取存储在其中的错误代码,并对 errno codes 进行一些 if 比较:

try:
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     s.connect((HOST, PORT))
     s.settimeout(60)               
     char = s.recv(1)
except socket.error, exception:
    if exception.errno == errno.ECONNREFUSED:
        # this is a connection refused
    # or in a more pythonic way to handle many errors:
    {
       errno.ECONNREFUSED : manage_connection_refused,
       errno.EHOSTDOWN : manage_host_down,
       #all the errors you want to catch
    }.get(exception.errno, default_behaviour)()
except socket.timeout:
    pass

与:

def manage_connection_refused():
   print "Connection refused"

def manage_host_down():
   print "Host down"

def default_behaviour():
   print "error"

关于python - 了解 Python 中的错误代码并使用有意义的错误名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8270510/

相关文章:

python - 处理 IncompleteRead,URLError

php - WordPress页面不保存,此错误是什么意思?

caching - 如何正确处理无限重试后的榛子写入

python - Flask SQLAlchemy 设置动态 URI

python - 是否可以在手持平板电脑上运行 linux?

python - 替换文件中的特殊字符串而不删除其他内容

error-handling - 范围的起始列太小。 (第50行,文件 “Clear Cells”)

python - 优化网络绑定(bind)多处理代码

python - Pandas - Dataframe 有带列表的列。如何对列表中的元素进行分组?

r - 程序运行后定位错误