zoukankan      html  css  js  c++  java
  • Python异常处理

    day25

    参考:http://www.cnblogs.com/wupeiqi/p/5017742.html

     1 while True:
     2     try:
     3         #
     4         inp = input('请输入序号:')
     5         i = int(inp)
     6 
     7     except Exception as e:
     8         print(e)
     9         i = 1
    10 
    11     print(i)

    执行结果:

    请输入序号:8
    8
    请输入序号:9
    9
    请输入序号:yu
    invalid literal for int() with base 10: 'yu'
    1
    请输入序号:
    IndexError,ValueError等是Exception的子类
    1 #IndexError,ValueError等是Exception的子类
    2 try:
    3     li = [11, 22]
    4     li[999]
    5 
    6 except IndexError as e:
    7     print(e)

    执行结果:

    list index out of range
    
    Process finished with exit code 0

    else,finall

     1 try:
     2 
     3     int('9a')
     4 
     5 except IndexError as e:
     6     print('IndexError',e)
     7 except ValueError as e:
     8     print('ValueError',e)
     9 except Exception as e:
    10     print('Exception',e)
    11 else:
    12     print('else')#正确,则执行
    13 finally:
    14     print('.....')#无论如何都执行

    若正确则执行else中内容,而finally中内容必须执行。

    执行结果:

    ValueError invalid literal for int() with base 10: '9a'
    .....
    
    Process finished with exit code 0

    主动触发异常、自定义异常、断言

     1 #主动触发异常
     2 def db():
     3     return False
     4 
     5 def index():
     6     try:
     7         result = db()
     8         if not result:
     9             raise Exception('数据库处理错误')#处理信息
    10     except Exception as e:
    11         str_error = str(e)
    12         print(str_error)#出错则输出:数据库处理错误
    13 
    14 index()
    15 
    16 # try:
    17 #     raise Exception('不过了......')#主动触发异常
    18 # except Exception as e:
    19 #     print(e)
    20 
    21 
    22 #自定义异常
    23 class OldBoyError(Exception):#继承Exception
    24 
    25     def __init__(self, msg):
    26         self.message = msg
    27 
    28     def __str__(self):
    29         return self.message
    30 
    31 # obj = OldBoyError('xxx')
    32 # print(obj)
    33 try:
    34     raise OldBoyError('我错了...')
    35 except OldBoyError as e:
    36     print(e)# e对象的__str__()方法,获取返回
    37 
    38 
    39 #断言,用于强制用户服从,可捕获,但一般不捕获。
    40 print(123)
    41 assert 1 == 2 #后面为条件
    42 print(456)

    执行结果:

    数据库处理错误
    我错了...
    123
    Traceback (most recent call last):
      File "/home/nizhipeng/PycharmProjects/learnPython/day25/异常处理.py", line 82, in <module>
        assert 1 == 2 #后面为条件
    AssertionError
    
    Process finished with exit code 1
  • 相关阅读:
    Mybatis用到的设计模式和常用类原理
    svn 版本迁移到 git 仓库
    mysql 主从master-slave同步复制 配置,为读写分离准备
    java.lang.NoSuchFieldError 异常原因
    PropertiesFactoryBean PropertyPlaceholderConfigurer 区别
    关于BigDecimal 和 double 类型保存金钱,以及精度问题,银行家舍入法
    mysql遇到锁表常用命令
    代码质量管理工具 sonar 配置
    java 环境变量java_home配置多加了 导致zookeeper莫名其妙问题。
    svn 版本转为git
  • 原文地址:https://www.cnblogs.com/112358nizhipeng/p/9858932.html
Copyright © 2011-2022 走看看