Python 入门学习之异常处理

目标

  • 了解 python 常见的异常处理
  • 掌握捕获异常的语句

1.常见异常

异常说明
SyntaxError语法错误
AttributeError属性异常
TypeError类型异常
ZeroDivisionError除数为0

2.处理异常

2.1 try…except…

  • 把某个程序语句写进 try…except 中,如果没有异常,程序会忽略except子句,正常运行;如果 try 子句中发生异常,程序会直接跳到 except 部分,执行子句。
try:
	...
except:
	...
  • 以上模式会捕获任何一种异常,没有针对性,难以检测是何种异常
  • 以下实例
while 1:
	print('这是一个除法计算游戏')
	c=input("输入‘c’游戏继续,否则游戏终止")
	if c=='c':
		a=10
		b=input("输入除数")
		try:
			print("除法结果是",a/float(b))
			print('--'*20)
		except:
			print("不知道啥异常,反正就是异常")
			print('--'*20)
	else:
		break

在这里插入图片描述

  • 再看看另一种模式,可以捕获具体的一种异常
try:
	...
except ZeroDivisionError:
	...
# 或者
try:
	...
except ZeroDivisionError as e:
	print(e)
  • 以上是捕获除数为0的异常,如果想要捕获别的异常,把异常类型代入即可。
  • 以下实例
while 1:
	print('这是一个除法计算游戏')
	c=input("输入‘c’游戏继续,否则游戏终止")
	if c=='c':
		a=input("输入第一个数")
		b=input("输入第二个数")
		try:
			print("除法结果是",float(a)/float(b))
			print('--'*20)
		except ZeroDivisionError:
			print("第二个数不能为0")
			print('--'*20)
	else:
		break	

在这里插入图片描述

  • python 在处理程序时遇到异常,程序就会终止运行,当你把你觉得可能会出错的语句放在 try 语句之中,让python帮你检查错误、处理异常,程序会继续运行。

2.2 处理多个异常

  • try…except…还可以处理多个异常
  • 方法一:使用多个except
while 1:
	print('这是一个除法计算游戏')
	c=input("输入‘c’游戏继续,否则游戏终止")
	if c=='c':
		a=input("输入第一个数")
		b=input("输入第二个数")
		try:
			print("除法结果是",float(a)/float(b))
			print('--'*20)
		except ZeroDivisionError:
			print("第二个数不能为0")
			print('--'*20)
		except ValueError:
			print("请输入数字")
			print('--'*20)
	else:
		break

在这里插入图片描述

  • 方法二:使用一个except
while 1:
	print('这是一个除法计算游戏')
	c=input("输入‘c’游戏继续,否则游戏终止")
	if c=='c':
		a=input("输入第一个数")
		b=input("输入第二个数")
		try:
			print("除法结果是",float(a)/float(b))
			print('--'*20)
		except (ZeroDivisionError,ValueError) as e:
			print(e)
			print('--'*20)
	else:
		break

在这里插入图片描述

5.抛出异常

5.1 raise

  • 发起异常raise NameError('python')
raise NameError('python')
try:
	python
except NameError as e:
	print(e)

在这里插入图片描述

  • 以上把 python 定义为一个叫 NameError 的异常,

5.2 assert

  • assert 语句发起条件判断
x=-2
assert x<0
assert x>0

在这里插入图片描述

5.3 抛出异常的实际应用

while 1:
	try:
		age=int(input('输入你的年龄'))
		assert age>0 # 断言输入应该大于0
		if age > 150:
			raise ValueError('输入年龄超出了正常范围')
		elif (age<=150) and (age>80):
			print("您真长寿,祝福如东海")
		elif (age<=80) and (age>=60):
			print("该享福啦")
		elif (age<=60) and (age>=30):
			print("壮年")
		else:
			print("真年轻")
	except (ValueError,AssertionError) as e:
		print(e)
		break

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值