كيف يمكنني التمييز بين "الوحدة النمطية غير موجودة" من "الوحدة النمطية ألقيت استثناء" على Drmentror؟

StackOverflow https://stackoverflow.com/questions/1860363

  •  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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top