Python基础06-异常

零、文章目录

Python基础06-异常

1、异常的基本概念

(1)异常是什么
  • 当检测到一个错误时,解释器就无法继续执行了,反而出现了一些错误的提示,这就是所谓的"异常"。
(2)异常演示
  • 例如:除数为0异常(数学中,除法运算除数是不能为0的)。
# 1、除数为0异常(数学中,除法运算除数是不能为0的)
print(10/0)

image-20231120195642967

2、异常的捕获方法

(1)捕获常规异常

基本语法:

try:
    可能发生错误的代码
except:
    如果出现异常执行的代码
'''
在Python中,我们可以通过try...except捕获异常
try:
    可能出现异常的代码
except:
    如果try语句中的代码出现了异常,则立即执行except缩进代码

优势:提高程序的健壮性
'''
num = int(input('请输入要进行除法运算的数字:'))
try:
    result = 10 / num
    print(result)
except:
    print('已经捕获到异常,执行B方案!')
(2)捕获异常并输出错误信息
  • 无论我们在except后面定义多少个异常类型,实际应用中,也可能会出现无法捕获的未知异常。这个时候,我们考虑使用Exception异常类型捕获可能遇到的所有未知异常:
'''
在实际工作中,不仅需要对异常进行捕获,还需要把异常信息写入到日志文件(具体是什么错误找到)
try:
    可能出现异常的代码
except Exception as e:
    print(e)  # 代表出错的异常信息 => 实际工作以后,写入日志文件中
'''
try:
    f = open('python.txt', 'r')
except Exception as e:
    print(f'-- 日志: {e} --')
    print('找到错误的同时,执行B方案!')
(3)捕获指定异常
  • 基本语法:如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
try:
	print(name)
except NameError:
	print('name变量名称未定义错误')
(4)捕获多个异常
try:
	print(1/0)
except (NameError, ZeroDivisionError):
	print('ZeroDivision错误...')
(5)异常捕获中else语句
'''
try:
    可能出现异常的代码
except:
    捕获异常
else:
    当try语句中的代码没有出现异常,则执行else语句中的代码,反之,则不执行
'''
try:
    f = open('python.txt', 'r')
except:
    f = open('python.txt', 'w')
else:
    content = f.read()
    print(content)
(6)异常捕获中的finally语句
'''
其实完整的异常捕获语句:
try:
    可能出现异常的代码
except Exception as e:
    如果出现异常,则执行的代码
else:
    如果try语句中的代码没有出现异常,则执行else中的代码
finally:
    特别适合实现一些收尾的工作,因为它是无论是否异常都会执行的代码 => f.close()
'''
try:
    f = open('python.txt', 'r')
except:
    f = open('python.txt', 'w')
else:
    content = f.read()
    print(content)
finally:
    f.close()