Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでSyntaxError例外をキャッチする方法は?


SyntaxErrorは、パーサーが理解できないソースコードを見つけるたびに発生します。これは、モジュールのインポート中、execの呼び出し中、またはeval()の呼び出し中に発生する可能性があります。例外の属性を使用して、入力テキストのどの部分が例外を引き起こしたかを正確に見つけることができます。

与えられたコードを書き直して例外を処理し、そのタイプを見つけます

try:
print eval('six times seven')
except SyntaxError, err:
print 'Syntax error %s (%s-%s): %s' % \
(err.filename, err.lineno, err.offset, err.text)
print err

出力

C:/Users/TutorialsPoint1/~.py
Syntax error <string> (1-9): six times seven
invalid syntax (<string>, line 1)

  1. PythonでKeyError例外をキャッチする方法は?

    辞書のキーとして値が見つからない場合、KeyErrorが発生します。指定されたコードは、例外をキャッチしてそのタイプを見つけるために次のように書き直されます。 例 import sys try: s = {'a':5, 'b':7}['c'] except: print (sys.exc_info()) 出力 (<type 'exceptions.KeyError'>, KeyError('c',), <traceback object at  0x0000000003203748&g

  2. リスト内包表記でPython例外をキャッチする方法は?

    Pythonには例外を処理または無視できる組み込み関数がないため、リスト内包には1つ以上の式が含まれているため、リスト内包のすべての例外を処理することはできません。ステートメントのみが例外をキャッチ/無視/処理できます。 例外が発生しやすい部分式の評価を関数に委任することは、実行可能な回避策の1つです。その他は、例外を発生させる可能性のある値のチェックです。 この問題を処理する方法は、次のコードを使用することです。 例 foo = (5,7,1,0,9) def bar(self): try: return [1/i for i in foo] except ZeroDivisionErro