Czy istnieje sposób na zdefiniowanie nazw wielu wyjątków za pomocą słowa kluczowego as lub Python 2.5 Grammar Exception, e? Więc jeśli zdefiniujesz klauzulę spróbuj / z wyjątkiem wyjątkami w krotkowym takim jak ten ...except (RuntimeError, TypeError, NameError):, aby również przypisać nazwy na błędy np. jak as (Rerr,Terr,Nerr)?

Lub czy muszą zdefiniować je oddzielnie jeden po drugim?

try:
    ....
except RuntimeError as Rerr:
    ....
except TypeError as Terr:
    ....
....
1
LarsVegas 20 sierpień 2012, 15:14

2 odpowiedzi

Najlepsza odpowiedź

Ale jeśli potrzebujesz ich, każdy nazwany oddzielnie, to prawdopodobnie definiujesz oddzielną logikę obsługi dla każdego, w którym to przypadku, co jest nie tak z oddzielnymi definicjami?

Możesz przypisać pojedynczą nazwę do wyjątku niezależnie od typu:

except (RuntimeError, TypeError, NameError) as e:
2
David M 20 sierpień 2012, 11:19

Zrozumiałeś, co robi słowo kluczowe as. Przypisuje samą wyjątku do zmiennej, a nie klasy. Więc każdy typ jest złapany przez except, zakończy się w zmiennej as.

6
Daniel Roseman 20 sierpień 2012, 11:18