Jika Anda cukup beruntung hanya mendukung python 3.x, ini benar-benar menjadi hal yang indah :)
bangkit dari
Kami dapat memadukan pengecualian menggunakan kenaikan gaji dari .
try:
1 / 0
except ZeroDivisionError as e:
raise Exception('Smelly socks') from e
Dalam hal ini, pengecualian yang akan ditangkap oleh penelepon Anda memiliki nomor baris tempat kami menaikkan pengecualian kami.
Traceback (most recent call last):
File "test.py", line 2, in <module>
1 / 0
ZeroDivisionError: division by zero
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "test.py", line 4, in <module>
raise Exception('Smelly socks') from e
Exception: Smelly socks
Perhatikan pengecualian bawah hanya memiliki stacktrace dari tempat kami mengangkat pengecualian kami. Penelepon Anda masih bisa mendapatkan pengecualian asli dengan mengakses __cause__
atribut pengecualian yang mereka tangkap.
with_traceback
Atau Anda bisa menggunakan with_traceback .
try:
1 / 0
except ZeroDivisionError as e:
raise Exception('Smelly socks').with_traceback(e.__traceback__)
Menggunakan formulir ini, pengecualian penelepon Anda akan menangkap memiliki traceback dari tempat kesalahan asli terjadi.
Traceback (most recent call last):
File "test.py", line 2, in <module>
1 / 0
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "test.py", line 4, in <module>
raise Exception('Smelly socks').with_traceback(e.__traceback__)
File "test.py", line 2, in <module>
1 / 0
Exception: Smelly socks
Perhatikan bahwa pengecualian bawah memiliki garis tempat kami melakukan pembagian yang tidak valid serta garis tempat kami mengeluarkan pengecualian.