zoukankan      html  css  js  c++  java
  • python_day25__02__异常处理__try---exception—else---finally

    #Author:'haijing'
    #date:2018/10/27

    # try:
    # #代码块 逻辑
    # pass
    # except Exception as e:
    # #上述代码块如果出错,自动执行当前快的内容
    # pass
    #
    # while 1:
    # try:
    # inp = input('请输入序号:')
    # i = int(inp)
    # except Exception as e: #一旦出错会将错误信息创建一个类Exception,对象名字叫e,即e就是类Exception的对象
    # print(e) #输出错误信息
    # i = 1
    # print(i)
    #如果输入数字,那么正确的执行try中的内容,如果输入的是字母,那么去执行except中的代码

    li = [1,2.3]
    li[999] #错误类型:IndexError 如果把Exception换成IndexError,那么就不会去识别别的错误信息
    int('qwer') #错误类型:ValueError 如果把Exception换成ValueError,那么就不会去识别别的错误信息,直接出现错误页面

    #Exception可以捕获所有错误
    #IndexError和ValueError只能捕获各自的错误
    #IndexError和ValueError只是Exception的一个子类
    #还有很多子类

    #一般情况下,先让子类上,最后老大再上
    try:
    pass
    except ValueError as e:
    print('ValueError',e)
    except IndexError as e:
    print('IndexError',e)
    except Exception as e: #以上小弟解决不了了,那么老大再去上
    print('Exception',e)
    else:
    print('else')
    finally:
    print('finally')
    #如果try中的内容出错,那么就会去执行exception中的内容;
    # 如果try中的内容不出错,那么就会去执行else中的内容 (try中正确的内容也会执行的)
    #不管try中出不出错,都会去执行finally中的内容

    #--------------主动触发异常 raise方法----------------#  ******
    # try:
    # raise Exception('不过了...') #主动去触发异常
    # except Exception as e:
    # print(e) #这样try中的内容和except中的内容都会去执行 *****

    #--------------主动触发异常的应用----------------#
    # def db():
    # # return True #表示执行成功
    # return False #表示执行失败
    # def index():
    # try:
    # result = db()
    # if not result: #表示db()没有执行成功
    # raise Exception('数据库处理错误') #主动去触发异常,将错误信息保存到Exception类中去,对象名字为e
    # except Exception as e:
    # str_error = str(e) #拿到错误信息:数据库处理错误,并将错误信息转换为字符串
    # print(str_error) #这里可以将str_error写入到日志中
    #
    # index()


    #--------------自定义异常,用到了__str__()方法----------------#
    #以前
    class oldbayError(Exception):
    def __init__(self,msg):
    self.message = msg
    def __str__(self):
    return self.message
    obj = oldbayError('xxx')
    print(obj) #打印xxx

    #现在
    class oldbayError(Exception):
    def __init__(self,msg):
    self.message = msg
    def __str__(self):
    return self.message
    try:
    raise oldbayError('我错了...') #相当于创建对象e = oldbayError('xxx')
    except Exception as e:
    print(e) #执行e对象的__str__()方法,获取返回值之后再打印 (print()方法的执行步骤)

    #--------------断言assert方法----------------#
    # assert+条件 如果条件成立那么执行下一句,如果条件不成立,那么程序会报错,终止执行代码
    print(23)
    assert 1==2 #程序会终止在这里 强制用户服从
    print(456)

    haijng in HZ 你在远方的山上 春分十里
    2018.10.28 中
     
  • 相关阅读:
    Spring Boot 2.4版本前后的分组配置变化及对多环境配置结构的影响
    Spring Boot 2.4 对多环境配置的支持更改
    Spring Boot 的2020最后一击:2.4.1、2.3.7、2.2.12 发布
    苹果M1芯片各种不支持,但居然可以刷朋友圈!你会买单吗?
    老板居然让我在Java项目中“造假”
    Spring Cloud正式移除Hystrix、Zuul等Netflix OSS组件
    为了Java微信支付V3开发包,我找出了微信支付文档至少六个错误
    IdentityServer4系列 | 支持数据持久化
    IdentityServer4系列 | 混合模式
    Gitlab Runner的分布式缓存实战
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9863785.html
Copyright © 2011-2022 走看看