今天我们来学习python中异常的捕获和处理,以及上次遗留的三个模块的内容。

 一、异常和错误

   什么是异常?

        异常发生之后,异常之后的代码就不执行了

     程序中难免会出现错误,这种错误可分为两种,一种是语法错误,一种是逻辑错误。

     1.语法错误   

#语法错误示范一
if

#语法错误示范二
def test:
    pass

#语法错误示范三
print(haha

语法错误
语法错误

    2.逻辑错误

#用户输入不完整(比如输入为空)或者输入非法(输入不是数字)
num=input(">>: ")
int(num)

#无法完成计算
res1=1/0
res2=1+'str'
逻辑错误

二、异常的种类

  在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误。   

l=['egon','aa']
l[3]
IndexError
dic={'name':'egon'}
dic['age']
ValueError
s='hello'
int(s)
ValueError

三、异常的处理

  1.使用if判断式

num=input('>>:')
if num.isdigit():
    int(num)
elif num.isspace():
    print('输入的是空格,就执行我')
elif len(num)==0:
    print('输入的是空,就执行我')
else:
    print('其它情况,执行我')
使用if判断进行异常处理

  2.语法结构处理异常

 1)基本语法

try:
   被检测的代码块
expect 异常类型:
    try一旦检测到异常,就执行这个位置的逻辑
f = open('a.txt')

g = (line.strip() for line in f)
for line in g:
    print(line)
else:
    f.close()
读文件操作例1
try:
    f = open('a.txt')
    g = (line.strip() for line in f)
    print(next(g))  #next(g)触发迭代
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
except StopIteration:
    f.close()
读文件操作例2

2)异常类只能处理指定的异常情况,如果非指定异常则不能处理

s1='hello'
try:
    int(s1)
except IndexError as e:
    print(e)

#没有捕获到异常,直接报错

3)多分支

s1='hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
View Code

4)万能异常(在python中有一个万能异常(Excpteion),它可以捕获任意异常)

s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)

 无论什么异常,只要一个Exception就足够,如下:

s1 = 'hello'
try:
    int(s1)
except Exception,e:
    '丢弃或者执行其他逻辑'
    print(e)

#如果你统一用Exception,没错,是可以捕捉所有异常,但意味着你在处理所有异常时都使用同一个逻辑去处理(这里说的逻辑即当前expect下面跟的代码块)

Exception
Exception

 

posted on 2017-11-14 11:25  Sober--  阅读(229)  评论(0编辑  收藏  举报