Bagaimana untuk Mengakses Pengecualian di Luar Blok `kecuali` dalam Python?

DDD
Lepaskan: 2024-10-31 16:10:54
asal
209 orang telah melayarinya

How to Access Exceptions Outside the `except` Block in Python?

Pengendalian Pengecualian dan Skop Pembolehubah dalam Python

Apabila menggunakan pengecualian bernama dalam Python, pembangun mungkin menghadapi ralat seperti NameError atau UnboundLocalError apabila cuba untuk akses pengecualian di luar blok kecuali. Tingkah laku ini timbul daripada skop eksplisit pengecualian terikat dalam pernyataan percubaan.

Dalam Python 3, pengecualian terikat secara automatik dikosongkan pada penghujung klausa kecuali untuk mengelakkan kebocoran memori tidak sengaja yang disebabkan oleh rujukan bulat dengan bingkai tindanan . Oleh itu, pengecualian mesti diberikan kepada nama lain untuk diakses kemudian. Tugasan seperti exc = exc tidak akan mencukupi.

Dalam Python 2, penjelasan ini tidak diperlukan kerana ketiadaan rujukan jejak balik. Walau bagaimanapun, walaupun dalam Python 2, amaran telah diberikan tentang mengelakkan rujukan bulat.

Untuk menyelesaikan isu ini, anda mempunyai dua pilihan. Satu pendekatan adalah untuk mengikat semula pengecualian kepada nama berasingan dalam blok kecuali, memastikan bahawa nama baharu ini tidak berada dalam skop pernyataan cuba.

try:
    raise Exception("foo")
except Exception as e:
    my_exception = e
Salin selepas log masuk

Sebagai alternatif, jika anda tidak memerlukan akses kepada jejak pengecualian, anda boleh mengosongkannya secara eksplisit untuk mengelakkan kemungkinan kebocoran memori.

try:
    raise Exception("foo")
except Exception as e:
    exc = e
    exc.__traceback__ = None
Salin selepas log masuk

Ingat, langkah ini penting untuk memastikan pengurusan memori dan pengendalian pengecualian yang betul dalam Python. Rujukan dan pembersihan pengecualian yang betul akan menghalang kebocoran memori dan membantu mengekalkan kestabilan kod.

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Pengecualian di Luar Blok `kecuali` dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!