目录
程序在运行时,如果 Python 解释器 遇到到⼀个错误,会停止程序的执行,并且提示⼀些错误信息,这就是 异常 。程序停止执行并且提示错误信息这个动作,抛出异常(raise 关键字)捕获异常:程序遇到异常,默认动作是终止代码程序的执行,遇见异常之后,可以使用异常捕获,让程序代码继续运行,不会终止运行(重点)
异常捕获【重点】
基本语法
try :书写可能发生异常的代码except : # 任何类型的异常都能捕获发生了异常执行的代码try :书写可能发生异常的代码except 异常类型 : # 只能捕获指定类型的异常, 如果不是这个异常, 还是会报错发生了异常执行的代码
try:
# 1. 获取⽤户从键盘输⼊的数据
num = input('请输⼊数字:')
# 2. 转换数据类型为整数
num = int(num)
# 3. 输出转换之后的数据内容
print(num)
except:
print('请输⼊正确的数字')
print('后续其他的代码,可以继续执⾏')
try:
# 1. 获取⽤户从键盘输⼊的数据
num = input('请输⼊数字:')
# 2. 转换数据类型为整数
num = int(num)
# 3. 输出转换之后的数据内容
print(num)
except ValueError: # 只能捕获 ValueError 类型及其⼦类的异常
print('发⽣了异常, 请输⼊正确的数字...')
捕获多个指定类型的异常
好处:可以针对不同的异常错误,进行单独的代码处理。
try :书写可能发生异常的代码except 异常类型 1 : # 只能捕获指定类型的异常, 如果不是这个异常, 还是会报错发生了异常 1 执行的代码except 异常类型 2 :发生了异常 2 执行的代码except 异常类型 ...:发生了异常 ... 执行的代码
try:
# 1. 获取⽤户从键盘输⼊的数据
num = input('请输⼊数字:')
# 2. 转换数据类型为整数
num = int(num)
# 3. 输出转换之后的数据内容
print(num)
a = 10 / num # 10 / 0
print(f'a: {a}')
except ValueError: # 只能捕获 ValueError 类型及其⼦类的异常
print('发⽣了异常, 请输⼊正确的数字...')
except ZeroDivisionError:
print('除数不能为 0')
异常捕获的完整版本
完整版本中的内容
,
不是说每⼀次都要全部书写
,
根据自己的需要
,
去选择其中的进行使用。
try :可能发生异常的代码except 异常类型 1 :发生异常类型 1 执行的代码# Exception 是常见异常类的父类, 这里书写 Exception, 可以捕获常见的所有⼀会,as 变量, 这个变量是⼀个异常类的对象,print( 变量 ) 可以打印异常信息except Exception as 变量 :发生其他类型的异常 , 执行的代码else :没有发生异常会执行的代码finally :不管有没有发生异常 , 都会执行的代码
try :可能发生异常的代码except Exception as e :发生异常执行的代码
try:
# 1. 获取⽤户从键盘输⼊的数据
num = input('请输⼊数字:')
# 2. 转换数据类型为整数
num = int(num)
# 3. 输出转换之后的数据内容
print(num)
a = 10 / num # 10 / 0
print(f'a: {a}')
except Exception as e:
print(f"错误信息为: {e}")
else:
print('没有发⽣异常我会执⾏')
finally:
print('不管有没有发⽣异常,我都会执⾏')
# print('不管有没有发⽣异常,我都会执⾏')
异常传递【了解】
- 异常传递是 Python 中已经实现好了,我们不需要操作,我们知道异常会进行传递.
- 异常传递:在函数嵌套调用的过程中,被调用的函数,发生了异常,如果没有捕获,会将这个异常向外层传递. .... 如果传到最外层还没有捕获,才报错。