python异常处理语句的关键字_python-异常处理

try-except语句

2184567-20201025132450555-2008847582.png

首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)

如果没有异常发生,忽略 except 子句,try 子句执行后结束

如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略

如果异常的类型和except 之后的名称相符,那么对应的 except 子句将被执行

如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中

一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行

import sys

try:

f = open('myfile.txt')

s = f.readline()

i = int(s.strip())

except OSError as err:

print("OS error: {0}".format(err))

except ValueError:

print("Could not convert data to an integer.")

except:

print("Unexpected error:", sys.exc_info()[0])

raise

分别针对每个可能的异常编制信息,如果还有无法预知的异常,则使用sys.exc_info()[0]来调出

可以使用一个except捕捉多个异常

def model_exception(x,y):

try:

b = name

a =x/y

except(ZeroDivisionError,NameError,TypeError):

print('one of ZeroDivisionError or NameError or TypeError happend')

捕捉所有异常

try:

...

except Exception as e:

...

log('Reason:', e) # Important!

try/except...else语句

2184567-20201025132547678-735732454.png

else 子句将在 try 子句没有发生任何异常的时候执行,这样except和else就包含了所有的程序可能出现的状况

try-finally 语句

2184567-20201025132806093-1535469526.png

使用异常处理来判定用户输入,并在用户输入错误时重新循环

whileTrue:try:

用户输入代码块except:

输出错误信息else:break使用用break来跳出循环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('这句话,无论异常是否发生都会执行。')

raise语句

raise[Exception[,args [,traceback]]],exception必须是Exception的子类

2184567-20201025132955033-539575926.png

with语句

更加推荐使用with

temp = os.open('test_text.txt', os.O_RDWR | os.O_CREAT)

temp_file = os.fdopen(temp, 'r')

print(str(temp_file.read()))

os.close(temp)

可以简化为

with open('test_text.txt', 'r') as f:

print(f.read())

注意点

一般涉及到外部的输入时需要使用异常处理

比如爬虫,用户输入,打开文件等等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值