Python異常md

8719 ワード

Python異常
エラー
NameError
EOFError:end of file
例外の処理
try...exceptで異常状況を処理できます
try:
    text = input("Enter something-->")
except EOFError:
    print("why did you do an EOF on me")
except KeyboardInterrupt:
    print("you cancelled the operation")
elseprint("you entered{}".format(text))


異常を投げ出す
raise文で例外を開始できますが、発生する例外は直接または間接的に例外クラスに属する派生クラスである必要があります.
ShortInputException例外タイプの作成
class ShortInputException(Exception):
    def __init__(self,length,atleast):
        Exception.__init__(self)
        self.length =length
        self.atleast = atleast
try:
    text = input("Enter something -->")
    if len(text) < 3:
        raise ShortInputException(len(text),3)
except EOFError:
    print("why did you do an EOF on me?")
except ShortInputException as ex:
    print(("ShortInputException:The input was"+
           "{0} long,except at least{1}").format(ex.length,ex.atleast))
else:
    print("No exception was raised.")

Try… Finally
ファイルが正しく閉じられていることを確認するには、finallyブロックで完了します.
import sys
import time

f = None
try:
    f = open("poem.txt")
    while True:
        line = f.readline()
        if len(line) == 0:
            break
        print(line,end='')
        sys.stdout.flush()
        print('Press ctrl+c now')
        time.sleep(2)
except IOError:
    print("Cloud not find file poem.txt")
except KeyboardInterrupt:
    print("!! You cancelled the reading from the file.")
finally:
    if f:
        f.close()
    print("(Cleaning up: Closed the file.)")

sys.stdout.flush()の意味は2 sおきに1つ出力することです
with文
with文はプロセスをよりきれいにすることができます
with open("poem.txt") as f :
    for line in f:
        print(line,end='')