سؤال

أنا أستخدم libcurl إلى صفحة الويب DL، ثم قمت بمسحها للبيانات والقيام بشيء ما بأحد الروابط. ومع ذلك، مرة واحدة في حين أن الصفحة مختلفة تماما، إلا أنني باستثناء ما استخراج البيانات السيئة وطرقي pycurl استثناء. حاولت العثور على اسم الاستثناء ل Pycurl ولكن لم يكن لديك حظ.

هل هناك طريقة يمكنني الحصول على Traceback لتنفيذ وظيفة حتى أتمكن من تفريغ الملف حتى أتمكن من إلقاء نظرة على إدخال الملف ومعرفة كان الرمز الخاص بي؟

هل كانت مفيدة؟

المحلول

sys.excepthook. قد تساعدك هنا، حيث يمكنك تعيين معالج استثناء عالمي. لست متأكدا من كيفية معالجة استثناءات Pycurl، وهي مكتبة ملزمة، ولكن من المحتمل أن تعمل على إعادة تعيينها إلى وظيفة عامة. شيء مثل:

>>> import sys
>>> 
>>> def my_global_exception_handler(type, value, traceback):
...     print traceback
...     sys.exit()
... 
>>> sys.excepthook = my_global_exception_handler
>>> raise
<traceback object at 0xb7cfcaa4>

يمكن أن تكون وظيفة الخطافة الاستثناء هذه طريقة مثيل لها إمكانية الوصول إلى الملف الذي يحتاج إلى إغراق.

نصائح أخرى

يمكنك استخدام معالج استثناء عام.

logging.basicConfig( file="someFile.log", level=logging.DEBUG )
logger= logging.getLogger( __name__ )
try:
    curl = pycurl.Curl()
    curl.setopt(pycurl.URL, url)
    # etc.
    curl.perform()
    curl.close
    logger.info( "Read %s", url )
except Exception, e:
    logger.exception( e )
    print e, repr(e), e.message, e.args
    raise
logging.shutdown()

سيكتب هذا سجل لطيف يحتوي على معلومات الاستثناء الذي تبحث عنه.

يمكنك التقاط جميع الاستثناءات في مكان ما في الكتلة الرئيسية واستخدام sys.exc_info () لمعلومات رد الاتصال وتسجيل ذلك إلى ملفك. EXC_INFO () إرجاع ليس فقط نوع الاستثناء، ولكن أيضا استدعاء traceback لذلك يجب أن هناك معلومات ما حدث خطأ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top