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入门到精通教程
查看: 493|回复: 0

Python错误和异常 学习笔记

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

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-6-15 04:21:44 | 显示全部楼层 |阅读模式
    错误和异常概念
    错误:
        1.语法错误:代码不符合解释器或者编译器语法
        2.逻辑错误:不完整或者不合法输入或者计算出现问题
    异常:执行过程中出现万体导致程序无法执行
        1.程序遇到逻辑或者算法问题
        2.运行过程中计算机错误(内存不够或者IO错误)
    错误和异常区别
    错误:
        代码运行前的语法或者逻辑错误,
        语法错误在执行前修改,逻辑错误无法修改
    异常分为两个步骤:
        1.异常产生,检查到错误且解释器认为是异常,抛出异常;
        2.异常处理,截获异常,忽略或者终止程序处理异常
    Python常见错误
    常见错误:ipython下
        1. a : NameError
            在没有定义一个变量的时候直接引用
        2. if True : SyntaxError
            语法错误
        3. f = open('1.txt') : IOError
            试图打开一个不存在的文件的时候
        4. 10/0 : ZeroDivisionError
        5. a = int('dd') : ValueError
            进行强制类型转换的时候遇到的错误
    try--except异常处理(1) 
    try-except:异常处理
    try:
        try_suite
    except Exception [, e]:
        exception_block
    1.try用来捕获try_suite中的错误,并且将错误交给except处理
    2.except用来处理异常,如果异常处理和设置捕获异常一致,使用exception_block处理异常
    例:
    try:
        a
    except Exception, e:
        print e
    try-except捕获异常分析:
    Case 1:
    try:
        undef
    except:
        print 'catch an except'
    Case 2:
    try:
        if undef
    except:
        print 'catch an except'
    case 1:可以捕获异常,因为是运行时错误
    case 2:不能捕获异常,因为是语法错误,运行前错误
    Case 3:
    try:
        undef
    except NameError, e:
        print 'catch an except', e
    Case 4:
    try:
        undef
    except IOError, e:
        print 'catch an except', e
    case 3:可以捕获异常,因为设置捕获NameError异常
    case 4:不能捕获异常,因为设置IOError,不会处理NameError
    try--except异常处理(2)
    try-except:处理多个异常
    try:
        try_suite
    except Exception1 [e]:
        exception_block1
    except Exception2 [e]:
        exception_block2
    except ExceptionN [e]:
        exception_blockN
     
    try-except--else使用
    try:
        try_suite
    except Exception1 [e]:
        exception_block1
    else:
        none_exception
    如果没有异常,执行else语句中的代码
    try--finally语句
    try-finally语句:
    try:
        try_suite
    finally:
        do_finally
    1.如果try语句没有捕获错误,代码执行do_finally语句
    2.如果try语句捕获错误,程序首先执行do_finally语句,然后将捕获到的错误交给python解释器处理
    try-finally语句:
    规则:try-finally无论是否检测到异常,都会执行finally代码
    作用:为异常处理事件提供清理机制,用来关闭文件或者释放系统资源
    try-except-finally使用:
    try:
        try_suite
    except:
        do_except
    finally:
        do_finally
    1.若try语句没有捕获异常,执行完try代码段后,执行finally
    2.若try捕获异常,首先执行except处理错误,然后执行finally
    try-except-else-finally使用:
    try:
        try_suite
    except:
        do_except
    else:
        do_else
    finally:
        do_finally
    1.若try语句没有捕获异常,执行完try代码块后,执行else代码块,最后执行finally
    2.若try捕获异常,首先执行except处理错误,然后执行finally
    with语句
    with语句:
    with context [as var]:
        with_suite
    1.with语句用来代替try-except-finally语句,是代码更加简洁;
    2.context表达式返回是一个对象;
    3.var用来保存context返回对象,单个返回值或者元祖;
    4.with_suite使用var变量来对context返回对象进行操作
    ……(讲的什么狗屎!!!)
    raise和assert
    raise语句
    raise语句用于主动抛出异常
    语法格式:raise [exception [, args]]
    exception: 异常类
    args: 描述异常信息的元组
    例:
    raise TypeError
    raise TypeError, 'Test Error'
    raise IOError, 'File Not Exist'
    assert语句
    断言语句:assert语句用于检测表达式是否为真,如果为假,引发AssertionError错误;
    语法格式:assert expression [, args]
    expression:表达式
    args:判断条件的描述信息
    例:
    assert 7==6
    assert 0, 'Test Error'
    Python标准和自定义异常
    标准异常:python内建异常,程序执行前就已经存在
    自定义异常:
    1.python允许自定义异常,用于描述python中没有涉及的异常情况
    2.自定义异常必须继承Exception类
    3.自定义异常只能主动触发
    自定义异常示例:
    class FileError(IOError):
        pass
    raise FileError, 'Test FileError'
     
    class CustomError(Exception):
        def __init__(self, info):
            Exception.__init__(self)
            self.errorinfo = info
        def __str__(self):
            return 'CustomError: %s' % self.errorinfo
    try:
        raise CustomError('test CustomError')
    except CustomError, e:
        print 'Error Info : %s' % e
     
    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-12-23 07:29 , Processed in 0.058699 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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