码迷,mamicode.com
首页 > 编程语言 > 详细

python--异常处理

时间:2018-11-12 21:46:44      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:attr   ISE   同名   interrupt   python   oar   异常   indexer   字典   

一、格式  :try....except....finally

try:
    s=10/0
except ZeroDivisionError as e:
    print(走这里)
    print(e)

def calc(a,b):
    try:
        res = a/b
    except ZeroDivisionError as e:
        res = 除数不能为零,%s%e
        print(res)
    except TypeError as e:
        res = 类型错误,%s % e
    except Exception as e:  # Exception捕捉所有的异常
        print(e)

res = calc(10,1)
calc(k,1)   #TypeError: unsupported operand type(s) for /: ‘str‘ and ‘int‘
calc(10,0)


money = input(enter:)
try:
    money = int(money)
except Exception as e:#产生异常时执行
    print(输入金额错误)
else:    #这个else和上面的try对应,没有出现异常时执行
    print(money+1)
finally:
    print(不管是否出现异常都会执行)

二、常见的异常信息

AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x
 
IOError:输入/输出异常,一般是无法打开文件
 
ImportError: 无法导入模块或包,一般是路径问题或名称错误
 
IndentationError:代码没有正确对齐,属于语法错误
 
IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]
 
KeyError:试图访问字典里不存在的键
 
KeyboardInterrupt:Ctrl+C被按下
 
NameError:使用一个还未被赋予对象的变量
 
SyntaxError: 语法错误
 
TypeError: 传入对象类型与要求的不符
 
UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量
 
ValueError: 传入一个调用者不期望的值,即使值的类型是正确的

三、主动抛出异常

主动抛出异常,就是我们在代码里面让它自动抛出一个异常,然后捕捉到,比如说我们在写自动化测试脚本的时候,结果和预期不符合,就可以主动抛出一个异常信息,然后捕捉到,做其他的处理,主动抛出异常使用raise关键字。

try:
 
    raise KeyError     #主动抛出一个keyerror的异常
 
except KeyError as e:
 
    print(这个是我主动抛出的异常)

 

python--异常处理

标签:attr   ISE   同名   interrupt   python   oar   异常   indexer   字典   

原文地址:https://www.cnblogs.com/HathawayLee/p/9949244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!