python学习笔记——异常

一、除零异常

# coding=utf-8
# 代码文件: ch10_1.py

i = input('请输入数字: ')

n = 666
result = n / int(i)
print(result)
print('{0}除以{1}等于{2}'.format(n, i, result))

在这里插入图片描述
在这里插入图片描述

二、捕获异常
我们不能防止用户输入0,但在出现异常后我们能捕获并处理异常,不至于让程序发生终止并退出。
1. try-except 语句
try:
    <可能会引发异常的语句>
except [异常类型]:
    <处理异常>

# coding=utf-8
# 代码文件: ch10_2_1.py

i = input('请输入数字: ')
n = 666
try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:  # except
	print("不能除以0,异常:{}".format(e))

2. 多个except 代码块
try:
    <可能会引发异常的语句>
except 异常类型1:
    <处理异常>
except 异常类型2:
    <处理异常>

except:
    <处理异常>

多个except代码块根据异常类型匹配到不同的except代码块。
省略异常类型的except代码块是默认的except代码块,它只能被放到最后,捕获上面没有匹配的异常类。

# coding=utf-8
# 代码文件: ch10_2_2.py

i = input('请输入数字: ')
n = 666
try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:
	print("不能除以0,异常:{}".format(e))
except ValueError as e:
	print("输入的是无效数字,异常:{}".format(e))

3.多重异常捕获
如果多个except代码块的异常处理过程类似,则可以合并处理,这就是多重异常捕获。

# coding=utf-8
# 代码文件: ch10_2_3.py

i = input('请输入数字: ')
n = 666
try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except (ZeroDivisionError, ValueError) as e:
	print("异常发生:{}".format(e))

4.try-except 语句嵌套

# coding=utf-8
# 代码文件: ch10_2_4.py

i = input('请输入数字: ')
n = 666
try:
	i1 = int(i)
	try:
		result = n / i1
	    print('{0}除以{1}等于{2}'.format(n, i1, result))
	except ZeroDivisionError as e1:
		print("不能除以0,异常:{}".format(e1))
except ValueError as e2:
	print("输入的是无效数字,异常:{}".format(e2))

三、finally代码块释放资源
有时在try-except语句中会占用一些资源,可使用finally代码块。
try:
    <可能会引发异常的语句>
except 异常类型1:
    <处理异常>
except 异常类型2:
    <处理异常>

except:
    <处理异常>
finally:
    <释放资源>

# coding=utf-8
# 代码文件: ch10_3.py

i = input('请输入数字: ')
n = 666
try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:
	print("不能除以0,异常:{}".format(e))
except ValueError as e:
	print("输入的是无效数字,异常:{}".format(e))
finally:
	# 释放资源代码
	print('资源释放...')

四、自定义异常类

# coding=utf-8
# 代码文件: ch10_4.py

class ZiDingYiException(Exception):
	def __init__(self, message):
		super().__init__(message)

五、手动引发异常
现有的自带的异常都是由解释器引发的,至于自定义异常,可通过raise语句手动引发异常。

# coding=utf-8
# 代码文件: ch10_5.py

class ZiDingYiException(Exception):
	def __init__(self, message):
		super().__init__(message)

i = input('请输入数字: ')
n = 666
try:
	result = n / int(i)
	print(result)
	print('{0}除以{1}等于{2}'.format(n, i, result))
except ZeroDivisionError as e:
	# print("不能除以0,异常:{}".format(e))
	raise ZiDingYiException(不能除以0)
except ValueError as e:
	# print("输入的是无效数字,异常:{}".format(e))
	raise ZiDingYiException(输入的是无效数字)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值