从except子句中引发异常

4

我想知道我们是否可以做以下事情:
我们捕捉套接字错误,如果消息与某个值不同,则将异常转发到下一个常规异常子句中以便捕获吗?

try:
    some logic to connect to a server..   

except socket.error as se:
    if se.messsage != '123':
       raise Exception(se.message)
except exception as ex:
    log.error('write something')

不可以,但是你可以在另一个try...except中嵌套。 - zvone
我考虑过这个,但它的外观和感觉不好。 - JavaSa
2个回答

2
为了实现这个,您需要一组try-catch块。一旦捕获到异常,重新抛出该异常将导致在外部级别上捕获它。在块内尝试if else或者简单地将try-except块嵌套在另一个块中,就像这样:
try:
    try:
        #...
    except:
        raise
except:
    pass

1
我会称之为“嵌套的try-except块”,并编写示例以更接近问题,但除此之外是个好答案。 - tdelaney

0

你可以简单地使用不带参数的raise重新引发异常:

try:
    # some code
except:
    if condition:
        raise

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接