python 异常处理

   异常处理             

  1.什么是异常
     IndexError [][1]
    KeyError {}['key']
    pickle.load() EOFError
    FileNotFoundError open('aa')
    ModuleNotFoundError import aaaaaaaaaaa
    ValueError int('sdjkhf')
  2.什么时候最容易出异常
      当你要处理的内容不确定的时候
        1.有用户参与
        2.有外界数据接入 : 从文件中读 从网络上获取
# 当有多行报错的时候是为什么?
# def func1():
#     name
#
# def func2():
#     func1()
#
# def main():
#     func2()
#
# main()
# 在嵌套调用的过程中,内部的代码出了问题,外部所有的调用的地方都成为报错追溯信息的一部分

# 怎么解决
# 从下往上找 首先找到你写的代码 出错的那一行
# 看看能不能看出问题
# 就把报错的最后一行 错误类型和详细提示贴到百度里,结合报错的那一行解决问题

单分支

try:
    name = int('a')
except ValueError:
    print("值错误")

 

  多分支

li = ['a', 1, 'w']
try:
    num = int(input('num >>>'))
    print(li[num-1])
except ValueError:
    print("值错误")
except IndexError:
    print("索引超出li的范围")

  

多分支合并
li = ['a', 1, 'w']
try:
    num = int(input('num >>>'))
    print(li[num-1])
except (ValueError, IndexError):
    print("输入错误")

  万能异常

li = ['a', 1, 'w']
try:
    num = int(input('num >>>'))
    print(li[num-1])
except Exception:
    print("输入错误")

  as语法

li = ['a', 1, 'w']
try:
    num = int(input('num >>>'))
    print(li[num-1])
except Exception as e:
    print(e)
    print("输入错误")

  else 语句

    当try中的代码不发生异常的时候 走else分支 如果发送成功了 进行一些处理

li = ['a', 1, 'w']
try:
    num = int(input('num >>>'))
    print(li[num-1])
except Exception as e:
    print(e)
    print("输入错误")
else:
    print("没有错误")

  finally 语句

    无论如何都会被执行

li = ['a', 1, 'w']
try:
    num = int(input('num >>>'))
    print(li[num-1])
except Exception as e:
    print(e)
    print("输入错误")
finally:
    print("无论如何都会执行")

  主动抛异常

    主动抛出异常 : 是给其他开发者用的

    raise ValueError

    raise ValueError('你写的不对')

    django是别人写的程序 框架 --> 程序员用

  断言 - 语法

    assert 1==2 # 只能接受一个布尔值 False

    assert 1==1 # 只能接受一个布尔值 False

    print(123456)
    if 1 == int(input()):
     pass
    else:
    raise AssertionError

 
posted @ 2018-08-22 21:11  AndyStrack  阅读(237)  评论(0编辑  收藏  举报