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")
else:
print("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()的意义是每隔2s输出一个
with 语句
with语句可以使得过程更干净
with open("poem.txt") as f :
for line in f:
print(line,end='')