1. 异常
1.1 含义
在程序运行过程中,当Python检测到一个错误时,解释器将无法继续执行后续代码,并显示相应的错误提示信息,这种情况被称为"异常"。
它代表程序运行时发生的错误或异常情况,会导致程序正常执行流程的中断
# 示例
num = input("请输入一个数字:"
if num > 18: # 字符串和整型之间进行比较,要报错!
print("哈哈哈")1.2 异常处理【捕获异常】
1.2.1 语法格式
# 语法格式 try: 尝试执行的代码块 except 异常类型 as 变量: 检测到异常要执行的代码块 else: 没有检测到异常要执行的代码块 finally: 无论是否检测到异常,都会执行的代码块
# 示例
try:
num = int(input("请输入一个数字:")) # 如果输入的不是数字,就会报错!
print(num, type(num))
except:
print("转换失败!")
# 使用异常处理可以防止程序因异常而终止运行!
print("哈哈哈哈啊!!!")
print("哈哈哈哈啊!!!")
print("哈哈哈哈啊!!!")
print("哈哈哈哈啊!!!")1.2.2 捕获指定异常
# 示例1
try:
num = int(input("请输入一个数字:")) # 如果输入的不是数字,就会报错!
print(num, type(num))
except ValueError:
print("值错误!")# 示例2
try:
print(abc)
except: # 未指定异常类型,可以捕获!
print("运行失败!")
try:
print(abc)
except ValueError: # 指定异常类型,无法捕获
print("值错误!")# 示例3
try:
print(abc)
except ValueError: # 捕获值错误
print("值错误!")
except NameError: # 捕获命名错误
print("命名错误!")
try:
print(abc)
except (ValueError, NameError): # 只捕获值 或 命名错误
print("错误!")# 示例4
try:
print("a" > 1) # TypeError
except (ValueError, NameError): # 只捕获值、命名错误,未指定捕获TypeError错误!
print("错误!")
print(123) # 无法运行这后面的代码!1.2.3 捕获异常具体描述信息
# 示例1
try:
num = int(input("请输入一个数字:"))
print(num, type(num))
print(name)
print(1 > "1")
print("abc"[4])
if True:
print(1234) # IndentationError: expected an indented block after 'if' statement on line 8
except Exception: # 万能异常类,能够捕获程序中发生的任意非语法错误类型的异常!如果语法错误,比如缩进问题,则无法捕获!
print("失败!")# 示例2
try:
num = int(input("请输入一个数字:"))
print(num, type(num))
print(name)
print(1 > "1")
print("abc"[4]
except Exception as e: # 将捕获到的异常对象(包含异常具体描述信息)保存到变量e中!语法错误无法捕获!
print("错误原因:", e)# 示例3
try:
if True: # if下面无缩进,语法错误!
print(1234) # IndentationError: expected an indented block after 'if' statement on line 9
except Exception as e: # 将捕获到的异常对象(包含异常具体描述信息)保存到变量e中!语法错误无法捕获!
print("错误原因:", e)1.2.4 else 语句
当try中的代码块成功执行并且没有引发任何异常时,你希望执行一些额外的代码,此时可以放入else语句块中。
# 示例
try:
num = int(input("请输入一个数字:"))
except Exception as e:
print("错误原因:", e)
else:
print("转换成功!")
print(num, type(num))1.2.5 finally 语句
finally 语句用于定义无论是否发生异常都要执行的代码块。它通常和try...except语句配合使用,以确保即使在遇到错误时也能执行某些操作,例如关闭文件,释放系统资源等。
# 示例
# 先打开文件,再操作文件,最后确保关闭文件
print("打开文件")
try:
print(文件操作)
except Exception as e:
print("错误原因:", e)
finally: # 确保文件被关闭
print("关闭文件")
print("哈哈哈哈")1.3 抛出自定义异常
在Python中,如果你想要在自己的程序中主动抛出一个异常,可以使用 raise 语句来实现。raise 语句允许你指定要抛出的异常类型和可选的异常信息。
步骤:
① 自定义异常:异常类型(异常具体描述信息)
② Exception("小白制造的异常") ,只使用一次!如果需要多次使用,就要定义变量去保存!
raise Exception("小白制造的异常") ,只使用一次!
③ 在合适的位置抛出:raise 异常对象
e = Exception("小白制造的异常"),需要使用多次!
raise e
# 示例
# 需求:创建一个函数,根据用户输入的数字,判断该数字是否为偶数。
# 如果输入的数字为偶数,则返回True,否则返回False。如果用户输入的数字不是数字,则抛出自定义异常!
def is_even():
# 用户输入数据
num = input("请输入数字:") # num:"xiaobai"
# 判断是否是非数字字符
if not num.isdigit(): # not False ==> True
raise Exception("输入的数字不是纯数字!")
else:
# 将用户输入的数字转换成整型
num = int(num)
# 判断是否是偶数:能够被2整除的数 ==》 除以2没有余数
# 2 4 6 8
# 2 / 2 = 1.0 4 / 2 = 2.0 6 / 2 = 3.0
# 2 // 2 = 1 4 // 2 = 2 6 // 2 = 3
# 2 % 2 = 0 4 % 2 = 0 6 % 2 = 0
if num % 2 == 0:
return True
else:
return False
# 为防止程序因异常而终止,可以使用try...except语句进行异常处理
try:
# 调用函数并接收返回值
rs = is_even()
print(rs)
except Exception as e:
print("错误原因:", e)著作权归文章作者所有。 未经作者允许禁止转载!