هل re.compile() أو أي استدعاء لمكتبة Python يلقي استثناءً؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

لا أستطيع أن أقول من خلال وثائق بايثون ما إذا كانت الدالة re.compile(x) قد تطرح استثناءً (بافتراض أنك قمت بتمرير سلسلة).أتصور أن هناك شيئًا يمكن اعتباره تعبيرًا عاديًا غير صالح.السؤال الأكبر هو، أين يمكنني أن أذهب لمعرفة ما إذا كان استدعاء مكتبة بايثون معينًا قد يؤدي إلى استثناءات (استثناءات) وما هي تلك الاستثناءات؟

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

المحلول

حسنًا، re.compile بالتأكيد يجوز:

>>> import re
>>> re.compile('he(lo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python25\lib\re.py", line 180, in compile
    return _compile(pattern, flags)
  File "C:\Python25\lib\re.py", line 233, in _compile
    raise error, v # invalid expression
sre_constants.error: unbalanced parenthesis

وثائق يدعم هذا بطريقة ملتوية - تحقق من الجزء السفلي من صفحة "محتويات الوحدة" للحصول على وصف (موجز) لل error استثناء.

للأسف ليس لدي أي إجابة على السؤال العام.أفترض أن الوثائق الخاصة بالوحدات المختلفة تختلف من حيث الجودة والشمول.إذا كانت هناك وحدات معينة كنت مهتمًا بها، فقد تتمكن من ذلك فك لهم (إذا كانت مكتوبة في بايثون) أو حتى انظر إلى المصدر, ، إذا كانوا في المكتبة القياسية.

نصائح أخرى

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

هناك قائمة الاستثناءات المضمنة, ، والذي يحتوي بشكل عام على بعض الوصف للوقت الذي قد يتم فيه رفع هذه الاستثناءات.الأمر متروك لك بشأن مقدار التعامل مع الاستثناءات الذي ستفعله، وما إذا كنت ستتعامل مع الأشياء بأمان، أو ستفشل فقط في التتبع.

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