异常捕获

异常捕获

什么是异常

  • 异常是程序运行时可能发生的错误或意外情况。在Python中,异常是一种对象,表示程序执行期间发生的错误。
  • 当出现异常时,程序的正常流程会被中断,而是跳转到异常处理流程。

异常分类

  • 内建异常(Built-in Exceptions):由Python内部定义的异常,例如ZeroDivisionErrorNameError等。

  • 用户自定义异常:由程序员自己定义的异常,用于满足特定的业务需求。

    异常分类

    【一】异常捕获语法

    try:
        可能会发生异常的代码块
    # Exception : 任意异常类型都会被捕获到,并且赋值给变量e
    except Exception as e:
        # 展示异常原因
        print(e)
    
    

​ 【1】不指定错误类型,只捕获异常

try:
    print(int('abc'))
except:
    print(f'报错了')

【2】指定确认的异常类型,并捕获

try:
 print(int('abc'))
except ValueError as e:
 print(e)
#invalid literal for int() with base 10: 'abc'    

​ 【3】无论是什么异常,都会被捕获到,并且输出(except Exception as e:)

try:
    print(int('abc'))
except Exception as e:
    print(e)

​ 【4】异常分支语句

'''
try:
    # 正常的操作
    ...
except:
    # 发生异常,执行这块代码
    ...
else:
    # 如果没有异常执行这块代码
    ...
'''

​ 【5】无论是否发生异常都将执行最后的代码

'''
try:
	# 正常执行的代码
    ...
except:
    # 发生异常,执行这块代码
finally:
	#退出try时总会执行
    ...
'''

​ 【6】用raise 主动触发异常

try:
    #对的信息会触发下面raise语句
    print(int('123'))
    raise ValueError("这是一个错误")
except Exception as e:
    print(f"这是异常 {e}")
    
    
# 循环遇到异常也会停止运行
while True:
   raise ValueError('这是一个错误')

​ 【7】自定义异常

class MyException(BaseException):
    def __init__(self, args):
        print(f'MyException :>>>>  {args}')

    # def __new__(cls, *args, **kwargs):
    #     print(f'这是 MyException抛出的异常 ')


try:
    raise MyException('这是自己的异常')
except Exception as e:
    print(f"这是错误 {e}")

断言

  • assert condition, message
    condition:断言的条件,如果为False,则触发异常。
    message:可选参数,用于指定触发异常时的错误消息。
username = input('请输入用户名:>>>> ').strip()
assert 'hope' in username, '必须带hope'
posted @ 2023-12-06 16:14  -半城烟雨  阅读(8)  评论(0编辑  收藏  举报