python中的异常及异常的传递

本文详细介绍了Python中的异常处理机制,包括异常的传递、捕获和处理,以及如何主动抛出异常。通过示例代码展示了try-except-else-finally结构的使用,以及如何自定义异常上下文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'''
异常 : 
1、一些内置的异常类  基本上都是Exception的子类(派生出来的)  
2、异常的传递 : 从产生异常的地方开始传递到调用异常的地方 如果一直没有处理异常  会一直传递到主函数  然后停止程序并报出异常信息     
3、try:     except:    else:    finally:      捕获异常并处理
4、主动抛出异常 :比如输入密码时要求密码长度超过8位

'''
# 异常   异常的传递    捕获异常
def demo1():
    num = int(input('please input a integer:'))
    return 8 / num

def demo2():
    return demo1()

try:    # 捕获会产生异常的地方
    print(demo2())
except ValueError:    # 匹配异常类型
    print('input a right integer')
except ZeroDivisionError:    # 匹配异常类型
    print('division by 0')
except Exception as result:      # 当前面的异常都没有捕获到异常时 其他未知异常都会被捕获 并且这个异常类型会被存储在result中
    print(result)
else:      # 当没有异常发生时会执行的代码
    print('sucessful!')
finally:          # 不管有没有异常发生时都会执行的代码
    print('here finally')

print('-'*50)       # 不管有没有异常发生时都会执行的代码


# 主动抛出异常

def PassWord_input():
    pwd = input('input password:')
    _length = len(pwd)
    if _length < 8:
        ex = Exception('密码长度短于8位')    # 主动抛出异常分两步 : 1、创建一个Exception('XXX')的对象   XXX为异常提示信息  
        raise ex                             #                      2、raise抛出这个对象(异常对象)
    else:
        print('输入成功')
    print('test raise')            # raise相当于return  执行到就会停止
while True:      # 可以一直try捕获异常 直到没有发生异常后else:break跳出
    try:
        PassWord_input()
    except Exception as res:
        print(res)
    else:
        break
print('*'*50)

# 禁止异常上下文
# raise ValueError from None    自定义异常上下文

# 一箭双雕(一个except 捕获多个异常) :  元组
# except (TypeError, ValueError, NameError):

# 警告
from warnings import warn
warn('i am an apple')

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值