• 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 中
     
  • 相关阅读:
    从坐标系图中理解“空间变换”
    Normal Map中的值, Tangent Space, 求算 Tangent 与 Binormal 与 TBN Matrix
    A Personal Understanding to Matrix Transformation in Graphics
    [转] 双数组前缀树
    [转] Hive简介
    [转] 远程访问服务器Jupyter Notebook的两种方法
    [转] LSTM中的pack和pad
    [转] Beam Search
    [转] linux提示符过长tips
    [转] batch normalization相关
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/9863785.html
Copyright © 2020-2023  润新知