python的异常捕获


异常是指在语法正确的前提下,程序运行时报错就是异常。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

捕获异常

捕获异常的语法:

try:
     ...代码1...
	 ...代码2...
	 ...代码3...
except 异常类型:
     try中一旦检测到异常,就执行这个位置的逻辑

注意:
如果发生的异常类型和捕获的异常类型不相同,还是不能捕获异常,程序还会结束。

try:
    print(41 / 0)
except ZeroDivisionError:
    print("除零错误!")

捕获多个异常

多分支结构格式:

try:
	执行的代码...
except 异常类型:
	捕获异常1
except 异常类型 :
	捕获异常2
except 异常类型:
	捕获异常3
...

捕获到第一个异常,就结束了,不会捕获剩余的异常

try:
	print(1/0)
except ZeroDivisionError:
	print("除零错误!")
except IndexError:
	print("索引错误!")

元组形式结构:

try:
	执行的代码...
except(异常类型1,异常类型2,异常类型3):
	捕获异常...
try:
    lst = [1, 2]
    print(1 / 0)
    print(lst[2])
except (ZeroDivisionError, IndexError):
    print("报错啦")

获取异常的信息描述

格式如下:

try :
	执行代码...
except 异常类型 as 变量名:
	执行异常...

具体例子:

try:
	print(1/0)
except ZeroDivisionError as e:
	print(e)  #  division by zero

捕获所有异常

格式如下:

try:
	代码...
except:
	捕获异常

或者

try:
	代码...
except Exception as e:
	捕获了异常

具体例子:

try:
	print(1/0)
except:
	print("发生异常了")
try:
	print(1/0)
except Exception as e:
	print('发生异常了!')

else

如果没有捕获到异常,那么就执行else中的事情
具体例子:

try:
	print('hello')
except:
	print('有异常'!)
else:
	print('没有异常哦')

注意:else一定要有except否则语法错误

try…finally…

try…finally…语句用来表达这样的情况:
在程序中,如果一个段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。 比如文件关闭,释放锁,把数据库连接返还给连接池等。
说明:不管try语句有没有执行成功,都会执行finally语句

具体例子如下:

try:
	print(1/0)
	lst=[]
	print(lst[2])
except:
	print('有异常')
finally:
	print('不管有没有异常都要执行我')

使用raise抛出系统的异常

在下面的例子中,如果不抛出异常,输入的字符长度小于2时,那么程序运行到print(name,pwd)时,会发生错误,因为pwd没有定义。
但是如果抛出异常,则后续的代码会不予以执行,不会报错(当然,不用异常的话也可以直接把print(name,pwd)划入else的范围,也不会报错)

while 1:
	name=input("请输入你的名字(长度大于2位):")
	try:
		if len(name) < 2 :
			raise Exception('长度不够,请重新输入!')
		else:
			pwsd=input('请输入密码:')
		print(name,pwd)
	except Exception as e:
		print(e)	
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值