【第十三课】 异常

本文介绍了Python中的异常处理机制,包括try-except的基本用法、捕获多种异常、捕获所有异常以及try-except-else-finally的使用。同时,讲解了如何主动抛出异常和自定义异常类,并通过示例展示了断言在程序中的应用。通过这些内容,读者可以更好地理解和处理程序运行时可能出现的错误情况。
摘要由CSDN通过智能技术生成


前言

当程序中间的某一段代码出现错误时,该错误则会终止整个程序。影响后面的代码运行。这次分享的就是用来解决程序报错的问题的。


异常捕获

异常捕获的作用 : 当程序报错时,不会终止程序。用于避免一段代码出错而终止后面的代码

  • 普通异常

    # 基本语法格式:
    try:
        pass
    except: 
       pass
    

其语意可以理解为: 如果 try 里面的代码执行不了,则执行 except 中的代码。若 try 中的代码可以执行,则不执行 except 中的代码

try:
    print(1/0)
except:
    print("我是except")

    
# 输出结果    
我是except # 很显然,1/0 会报错。所以执行except中的代码
  • 捕获多种异常

基本语法: try-except-except...

try:
    int("a")
except IndexError as e:
    print(e)
except ValueError as e:
    print(e)
except SyntaxError as e:
    print(e)
    
# 输出结果:
invalid literal for int() with base 10: 'a'

xxx as e : 意思是给 xxx 重命名为 e

  • 捕获所有异常
try:
    int('a')
except Exception as e:
    print(e)
    
# 输出结果:
invalid literal for int() with base 10: 'a'
  • try-except-else 语句
try:
    int(1.2)
except Exception as e:
    print(e)
else:
    print("没有报错,则执行else")
    
    
# 输出结果:
没有报错,则执行else 

当程序没有报错时,则执行else中的代码

  • try-except-else-finally 语句
try:
    int('a')
except Exception as e:
    print(e)
else:
    print("没有报错,则执行else")
finally:
    print('无论是否报错,都执行finally')
    
    
# 输出结果:
invalid literal for int() with base 10: 'a'
无论是否报错,都执行finally

无论是否报错,都会执行finally中的代码

主动抛出异常

当程序不满足一个条件是,则主动抛出异常

def func(num):
    if num < 100:
        raise Exception("数字小于100")


try:
    num = int(input("请输入一个数字:"))
    func(num)
except Exception as e:
    print(e)
else:
    print("数字大于100")

自定义异常类

需要继承Exception类实现

# 自定义异常:继承Exception
class FuncError(Exception):
    def __init__(self, error):
        self.error = error


try:
    raise FuncError("error参数")
except FuncError as e:
    print(e)

断言

断言可以用于自动化测试

print("断言前")
assert 1 == 1
print("断言后")

# 输出结果:
断言前
断言后
print("断言前")
assert 1 == 2
print("断言后")

# 程序之后输出前面的代码,后面的代码会报错

总结

这章的内容比较简单。欢迎各位大佬评论交流。也欢迎各位大佬批评指正。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值