python--异常处理

程序员终生与bug斗争,为了铲除bug,怎能不懂异常处理的基本技巧?

python提供了异常处理的一个方法try

1.常见的程序错误有:

ValueError 传入无效的参数    
TypeError 对类型无效的操作
IndentationError 缩进错误
SyntaxError Python 语法错误
KeyError 映射中没有这个键
IndexError 序列中没有此索引(index)
ImportError 导入模块/对象失败
NameError 未声明/初始化对象 (没有属性)
RuntimeError 一般的运行时错误
常见的错误

如何加入异常处理代码,是出现错误不报错,并且把错误类型展示

2.那就要引出   try   了,遇见要发生的错误,就try一下吧!

try:
    print(2+'3')
except TypeError:
    print('你错了')     #你错了
try
[][3]      #IndexError
{}['k']    #KeyError
1/0       # ZeroDivisionError
2+'3’     #TypeError
iint(input(>>>) )            
 >>>qqq               #ValueError
举例错误类型

有人要问,try一段代码,只能预测一次错误类型么?当然不是!except支持多分支,可以try一次,except多次错误类型

try:
    ret = int(input('number >>>'))
    print(ret*'*')
except ValueError:
    print('输入的数据类型有误')
except TypeError:
    print('类型操作错误')
except Exception:
    print('你错了,老铁')
except多分支

3.在能够遇见错误类型的时候,我们可以用具体的错误类型,但是也有时候我们无法预测 ,这时候就要改用try    except  Exception:这种模式了

try:
    ret = int(input('number >>>'))
    print(ret)
except Exception:
    print('你错了,老铁')    #你错了,老铁
万能try

 4.try除了提供except 预测错误,还提供了else  finally  进阶功能,下面让我们举例说明吧

①else  没有异常的时候执行else中的代码

else:
       没有异常的时候执行else中的代码
try:
    print(2+3)
except TypeError:
    print('你错了')     
else:
    print('你写的代码没有bug')   #5   你写的代码没有bug
else

② finall不管代码是否异常,都会执行  常用在函数里做收尾工作,和return相遇的时候 依然会执行

def func():
    try:
        f = open('file','w')
        print('你好')
        return True
    except Exception:
        return False
    finally:
        print('执行finally了')
        f.close()
func()      #你好    执行finally了
finally

6.我们来总结一下异常处理的重点

异常:程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容
使用try和except就能处理异常
    try是我们需要处理的代码
    except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码
    except支持多分支,可以try一次,except多次错误类型
    有没有一个能处理所有错误的类型 : Exception
        有了万能的处理机制仍然需要把能预测到的问题单独处理
        单独处理的所有内容都应该写在万能异常之前
    else : 没有异常的时候执行else中的代码
    finally : 不管代码是否异常,都会执行
        finally和return相遇的时候 依然会执行
        函数里做异常处理用,不管是否异常去做一些收尾工作
原文地址:https://www.cnblogs.com/zzy-9318/p/8279090.html