慢就是快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}')
相关推荐
三小河2 小时前
从 Markdown 到 Generative UI:AI 如何从“生成答案”进化到“生成界面”?
前端·人工智能·后端
请为小H留灯2 小时前
Windows 本地前端项目一键运行指南:Volta+Node+pnpm + 阿里镜像完整初始化流程
前端·pnpm·node·js
企业数字化笔记2 小时前
AI工具参数很多怎么办?预设、表单校验、危险参数与配置审计
java·spring boot·python·音视频
J船长2 小时前
从 App 开发到 Unity 游戏开发:建立认知地图,结合 AI 开始实践
前端
牛奔3 小时前
mise 管理多版本 Go 项目
开发语言·前端·chrome·后端·golang
huaweichenai3 小时前
spring boot对接阿里短信
java·spring boot
KING-WU5123 小时前
Linux 工具之Make 与 Makefile
java·linux·服务器
Lsetea3 小时前
OpenSSL报certificate is not yet valid:error 9与notBefore时间排查
linux·运维·https·ssl证书·openssl