Vì vậy, tôi có một lớp với hai phương pháp trong đó:Trở về từ bắt "RuntimeError" luôn mang đến cho 'python None`
class Test:
def cycle(self, n=float("inf"), block="x"):
try:
self.cycle(n-1, block)
except RuntimeError as e:
if str(e) == "maximum recursion depth exceeded":
print("... forever")
return 10
def f(self):
try:
raise Exception()
except:
return 10
return 20
x = Test()
print(x.cycle())
print(x.f())
và nó kết quả đầu ra:
... forever
None
10
gì cho? Tại sao tôi có thể trở về từ một ngoại trừ người khác chứ? Tôi có thể in bình thường từ lần đầu tiên ngoại trừ, nhưng nó luôn luôn trả về None
Hum, tôi chỉ thử đặt 'return 10' ra khỏi' ngoại trừ RuntimeError là e: '. Và nó hoạt động. –