1
6
我相信你的猜测是正确的,在比较是如何工作的,唯一的拦截方法就是把fred作为基类添加到bob中。例如:
据我所知,这是你写作的唯一方法。但是,如果您只是重写了except:line-as
它可以捕获Bob和Fred,而不需要修改Bob的定义。 |
2
1
好吧,你可以抓住“例外”——但这不是很蟒蛇。您应该尝试捕获正确的异常,然后作为最后的手段返回到一般异常(所有异常都是从中子类化的)。如果这对您不起作用,那么在您的设计阶段就出现了严重的错误。 See this note from Code Like A Pythonista
然而,在python的禅中有一个习语是
|
3
1
所以基本上,这个异常是被捕获的,因为Bob是Fred的子类,我假设,要么它们实现了类似于
看,这就是你想要实现的方式,无论你想要什么。当然不是在 初始化 但是其他方法。
|
4
1
我不清楚如何将您的异常隐藏在socket.timeout中,从而遵循“无缝”的理念?按照定义捕获预期的异常有什么问题?
或者,如果您真的想把它作为socket.timeout捕获,为什么不在我们的\proxy\u helper\u类中提高socket.timeout?
因此,当您在我们的“代理”助手类中提升socket.timeout时,它应该被“except socket.timeout”捕获。 |
5
0
至少在cpython中,似乎有一个与类型10(异常匹配)的比较操作。你不太可能做任何事情来绕过这个计算。 >>> import dis >>> def foo(): ... try: ... raise OSError() ... except Exception, e: ... pass ... >>> dis.dis(foo) 2 0 SETUP_EXCEPT 13 (to 16) 3 3 LOAD_GLOBAL 0 (OSError) 6 CALL_FUNCTION 0 9 RAISE_VARARGS 1 12 POP_BLOCK 13 JUMP_FORWARD 21 (to 37) 4 >> 16 DUP_TOP 17 LOAD_GLOBAL 1 (Exception) 20 COMPARE_OP 10 (exception match) 23 JUMP_IF_FALSE 9 (to 35) 26 POP_TOP 27 POP_TOP 28 STORE_FAST 0 (e) 31 POP_TOP 5 32 JUMP_FORWARD 2 (to 37) >> 35 POP_TOP 36 END_FINALLY >> 37 LOAD_CONST 0 (None) 40 RETURN_VALUE |
lfox · 如果列中不存在某个值,则停止代码执行 2 年前 |
zaen · 将值传递到异常字符串消息中 2 年前 |
Zephyr · 如何在双ListView选择系统上实现过滤器? 6 年前 |
Aave · 错误数组长度的特定异常 6 年前 |