كيف يمكنني التمييز بين "الوحدة النمطية غير موجودة" من "الوحدة النمطية ألقيت استثناء" على Drmentror؟
-
13-09-2019 - |
سؤال
في بيثون، import does_not_exist
يثير ImportError
, ، و
import exists
exists.py
:
import does_not_exist
سوف جمع أيضا ImportError
.
كيف يجب أن أقول الفرق في التعليمات البرمجية؟
المحلول
الطريقة الوحيدة التي أعرفها هي التحقق مما إذا كان "موجود" Toplevel "موجود في رسالة الاستثناء أم لا:
try:
import exists
except ImportError as exc:
if "exists" in str(exc):
pass
else:
raise
هل يمكن أن يكون هذا طلب ميزة لصياد Python؟ سيكون لها متغير لاسم الوحدة بالتأكيد مريحة ..
نصائح أخرى
يمكنك استخدام TB_NEXT من Traceback. سيكون مختلفا عن شيء إذا حدث الاستثناء على وحدة نمطية أخرى
import sys
try:
import exists
except Exception, e:
print "None on exists", sys.exc_info()[2].tb_next == None
try:
import notexists
except Exception, e:
print "None on notexists", sys.exc_info()[2].tb_next == None
>>> None on exists False
>>> None on notexists True
لا تنتمي إلى StackOverflow