Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 1300|回复: 0

Python try…except 异常处理模块

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-4-11 10:58:24 | 显示全部楼层 |阅读模式

    作用:

    处理程序异常、抛出异常、友好输出异常

    1. 如何捕获异常、处理异常

    格式:

    try:
         pass
    except
    ValueError as e:
         pass
    except
    Exception as e:
         pass
    else
    :
         pass
    finally
    :
         pass

    相关注释:

    try 包含在try下的所有代码块都会进行异常检测处理
    execpt 处理异常 其后面的e(标准故障信息)可以指定也可以不指定
    finally 不管是否出现异常都会执行其下面的代码块

    具体如下图所示:

    clip_image002

    2. 异常的种类

    上面的故障处理模块只检测了Exception异常类,其实这个故障是所有异常的基类(父类) 无论什么异常都可以用他进行处理,不过在程序中要处理指定异常那么就必须使用相关的派生类(子类)比如:

    IndexError 下标错误

    KeyError key错误

    NameError 名称错误

    ValueError 值错误

    那么如果我定义了NameError 和 ValueError Exception等等这些异常处理标签如果我有一个ValueError的异常该如何进行处理呢?请看下图

    clip_image004

    异常会从上到下一条条匹配异常处理标签直到匹配到为止 ExceptError在正常情况下放在异常处理程序的最末端 来处理未知异常,如果有些异常需要特殊操作为,放在“except ExceptError”的上面。

    3. 自定义异常

    了解自定义异常之前 首先需要理解两个概念:

    1. 类中的方法__str__(self) 执行类的时候会返回其中的内容 用于输出异常信息

    例如:

    #定义Alan_class类
    class Alan_class(Exception):
        #定义__str__方法
         def __str__(self):
           #指定输出信息
             return 'Alan Error'
    #执行类Alan_class
    print Alan_class()

    输出结果为:

    Alan Error

    2. raise 抛出异常

    比如 执行 raise ValueError() 那么就会抛出一个 ValueError值错误的异常

    了解完上面的两个知识点下面开始了解如何进行定义自己的异常

    clip_image006
    通过上图我们简单的梳理下:
    第一步:定义异常
     
    class 异常名称 (Exception):
          def __init__(self,msg)
                self.message=msg
          def __str__(self):  //定义__str__函数处理异常
                判断是否输入了自定义的异常信息
                if 输入了:
                    return ‘自定义异常信息’
                else:
                    rerun ‘默认异常信息’
    第二步:抛出并处理异常
     
    raise 异常名称(‘自定义异常信息’) //触发异常
    except 异常名称,异常信息
          print 异常信息
     

    4. assert 断言

    如果assert断言的条件为假,则抛出异常AssertError,等同于 判断+raise

    try:
        #如果两个字符串不相等则为假抛出异常
         assert 'Lisa' == 'Alan'
    #except处理异常
    except Exception:
         print 'name not same'

    执行结果:

    name not same

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 18:19 , Processed in 0.063238 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表