慢就是快12-12手动抛出异常

手动抛出异常

当程序遇到不符合预期情况时,可以使用raise语句手动触发

python 复制代码
print('欢迎使用年龄判断系统')
try:
    age=int(input('请输入你的年龄:'))
    if 18 <= age <= 120:
        print('成年')
    elif 0 <= age < 18:
        print('未成年')
    else:
        print('输入的年龄有误!(年龄应该为0~120的整数)')
        raise ValueError('年龄应该为0~120的整数')
except Exception as e:
    print(f'程序异常:{e}')

# raise NameError('ertghfgfggvb')
# raise KeyboardInterrupt('ectehfefgexbl')

异常的传递机制

1.如果异常没有被当前代码块所捕获处理,那该异常就会沿着调用链,逐层传递给其调用者。

2.如果所有调用者,都没有捕获该异常,那最终程序将因【未处理异常】而意外终止。

python 复制代码
def test1():
    print('******test1开始******')
    result = '100' + 180
    print('******test1吉******')

def test2():
    print('******test2开始******')
    test1()
    print('******test2结束******')

def test3():
    print('******test3开始*******')
    test2()
    print('******test3结束*******')

test3()

自定义异常类

1.由开发人员自己定义一个异常类,用来表示代码中"更具体、更有业务含义"的异常。

2.具体规则;定义个类(类名通常以 Error 结尾),继承 Exception 类或它的子类。

python 复制代码
class SchoolNameError(Exception):
    def __init__(self, msg):
        super().__init__('[校名异常]'+msg)

def check_school_name(name):
    if len(name) > 10:
        raise SchoolNameError('学校名过长')
    else:
        print('学校名是合法的')
try:
    check_school_name('atguiguuu')
except SchoolNameError as e:
    print(f'程序异常:{e}')
相关推荐
知识搬运临时工4 分钟前
一个模板把 AEM 拖进 Full GC 死亡螺旋:300% CPU、7 GB 堆、310 万行堆栈
java·aws
CCIE-Yasuo6 分钟前
网络安全-学习web开发-列表、标签
前端·学习·web安全
用户432935928058 分钟前
CoAP还是MQTT:1万只Cat.1水表三个月带宽续航实测
java
小大宇10 分钟前
Vue知识点-ElementPlus-06 单选+多选+下拉+日期选择
前端·vue.js·elementui
用户114818678948412 分钟前
Nuxt 3 学习版 Demo:跟着做一遍,从跑起来到自己会改
前端
用户83514140494914 分钟前
把日志和寄存器值喂给AI做故障定位,我的实际问法
linux·ubuntu
知守观18 分钟前
多模块架构演进:横向分层 vs 纵向领域,13 个真实项目的切分对照
java·后端·微服务
Java成神之路-33 分钟前
Java String 为什么不可变?和 HashMap 到底有什么关系?
java
hiahiahia12336 分钟前
Streaming Model Output
开发语言·前端
paopaokaka_luck37 分钟前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts