Pythonのエラーと例外

 

一般的なエラー

未定義の変数を使用しNameError--

SyntaxError--文法の誤り、間違ったフォーマットの共通プログラム。ポストはないかのように:

存在しないファイルやフォルダを開きますIOError--

ZeroDivisionError--ゼロ誤差、除算は、分母がゼロであります

ValueError--は時にキャストに生成、入力値を無効。= INT( 'DD')

プログラムの強制終了に生じる誤差割り込みKeyboardInterrupt--キーボード、。

 

 

エラー

構文エラー:コードは、インタプリタやコンパイラの構文を満たしていません

論理エラー:不完全または無効な入力や計算問題

異常な

論理OR演算の問題に遭遇

動作中のコンピュータのエラー(十分でないメモリまたはIOエラー)

何ら異常が手動で処理されていない場合、例外をキャッチし、インタプリタによって処理され、治療の方法は、無視するか、プログラムを終了します

違い

エラーは、それが単純なインデント文字として存在することが想定されていない、非正常です

例外は、そのようなユーザー入力などの重大なエラーが、大きすぎるのではなく、プログラムの動作条件であります

 

例外処理

してみてください/を除きます

異常なキャプチャは使用することができますtry / except文を。

 

 

 例:

一方、試してみるX- = INT INPUT 数値を入力してください:BREAK 以外とValueError 印刷あなたが入力した数字ではない、もう一度入力してみてください!
       
       
   
       

#ユーザが有効な整数を入力することを許可するが、ユーザが(対照-Cまたはオペレーティングシステムにより提供される方法を使用して)プログラムを中断することを可能にします。ユーザー情報は混乱KeyboardInterrupt例外につながります。

除いて... ELSE /してみてください

試す/文は、オプションの持っている以外、他の句を、この句を使用する場合、句を除くすべての後に配置する必要があります。

try節が例外を発生しませんときelse節が実行されます。

 

 

 例:

for arg in sys.argv[1:]:
    try:
        f = open(arg, 'r')
    except IOError:
        print('cannot open', arg)
    else:
        print(arg, 'has', len(f.readlines()), 'lines')
        f.close()

#   try 语句中判断文件是否可以打开,如果打开文件时正常的没有发生异常则执行 else 部分的语句,读取文件内容

 

try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

 

 

 

实例:

try:
    runoob()
except AssertionError as error:
    print(error)
else:
    try:
        with open('file.log') as file:
            read_data = file.read()
    except FileNotFoundError as fnf_error:
        print(fnf_error)
finally:
    print('这句话,无论异常是否发生都会执行。')

#finally 语句无论异常是否发生都会执行:

 

抛出异常

Python 使用 raise 语句抛出一个指定的异常。

 

 

实例:

x = 10
if x > 5:
    raise Exception('x 不能大于 5。x 的值为: {}'.format(x))

#如果 x 大于 5 就触发异常:

 

用户自定义异常

你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承,

实例:

class MyError(Exception): def __init__(self, value):
            self.value = value
        def __str__(self):
            return repr(self.value)

try:
        raise MyError(2*2)
    except MyError as e:
        print('My exception occurred, value:', e.value)

 

raise MyError('oops!')

输出结果:

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
__main__.MyError: 'oops!'

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/HyzH/p/12059142.html