2019独角兽企业重金招聘Python工程师标准>>>

python本身的异常处理是非常友好的

把你期望正常运行的代码放入到try中在用except捕获你认为意外的错误再执行相应的处理

try:pass
except Exception as err:print(err)

期望值是int类型:

s1 = 'hello'
try:int(s1)
except ValueError as err:print(err)

期待的key不存在:

dic = {'k1':'v1'}
try:dic['k20']
except KeyError as err:print(err)

超出索引范围:

dic = ["wupeiqi", 'alex']
try:dic[10]
except IndexError as err:print(err)

常用错误异常:

AttributeError             试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError                      输入/输出异常;基本上是无法打开文件
ImportError                无法引入模块或包;基本上是路径问题或名称错误
IndentationError          语法错误(的子类) ;代码没有正确对齐
IndexError                  下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError                    试图访问字典里不存在的键
KeyboardInterrupt       Ctrl+C被按下
NameError                 使用一个还未被赋予对象的变量
SyntaxError                Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError                  传入对象类型与要求的不符合
UnboundLocalError     试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError                 传入一个调用者不期望的值,即使值的类型是正确的

其他异常:

ArithmeticError
AssertionError
AttributeError
BaseException
BufferError
BytesWarning
DeprecationWarning
EnvironmentError
EOFError
Exception
FloatingPointError
FutureWarning
GeneratorExit
ImportError
ImportWarning
IndentationError
IndexError
IOError
KeyboardInterrupt
KeyError
LookupError
MemoryError
NameError
NotImplementedError
OSError
OverflowError
PendingDeprecationWarning
ReferenceError
RuntimeError
RuntimeWarning
StandardError
StopIteration
SyntaxError
SyntaxWarning
SystemError
SystemExit
TabError
TypeError
UnboundLocalError
UnicodeDecodeError
UnicodeEncodeError
UnicodeError
UnicodeTranslateError
UnicodeWarning
UserWarning
ValueError
Warning
ZeroDivisionError

完整的异常处理结构

try:# 主代码块pass
except KeyError,e:# 异常时,执行该块pass
else:# 主代码块执行完,执行该块pass
finally:# 无论异常与否,最终执行该块pass

主动抛出异常

try:raise Exception('错误了。。。')
except Exception as err:print(err)

自定义异常

class SelfException(Exception):def __init__(self, msg):self.message = msgdef __str__(self):return self.messagetry:raise SelfException('我的异常')
except SelfException as e:print(e)

对于必须出现我期望值的处理还有一种断言的方式,如果结果为false则抛出错误

python assert语法

例:

assert 1==1
assert 2+2==2*2
assert len(['my boy',12])<10
assert range(4)==[0,1,2,3]

assert其实还有第二个参数assert expression [, arguments] ,第二个参数为抛出的错误信息

如:

assert 2==1,'2不等于1'

转载于:https://my.oschina.net/u/3640109/blog/3032982

python常用异常处理相关推荐

  1. python常用模块-调用系统命令模块(subprocess)

    python常用模块-调用系统命令模块(subprocess) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. subproces基本上就是为了取代os.system和os.spaw ...

  2. Python 常用模块大全

    Python 常用模块大全(整理) OS 模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在 ...

  3. Python常用6个技术网站汇总分享!

    Python是一门面向对象的编程语言,它具有丰富和强大的库,能够把用其他语言编写的各种模块轻松地联结在一起,因此也常被称为"胶水语言".Python技术会随着互联网的不断发展一直迭 ...

  4. GitHub上7000+ Star的Python常用代码合集

    作者 | 二胖并不胖 来源 | 大数据前沿(ID:bigdataqianyan) 今天二胖给大家介绍一个由一个国外小哥用好几年时间维护的Python代码合集.简单来说就是,这个程序员小哥在几年前开始保 ...

  5. 简单介绍Python中异常处理用法

    这篇文章主要给大家分享的是 Python中异常处理用法,为了保证程序的健壮性与容错性,即在遇到错误时候程序不会崩溃,我们需要对异常进行处理,下面来看看文章对此的用法,需要的朋友可以参考一下 为了保证程 ...

  6. python 多进程异常处理

    前言 最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较'重'的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较'重' ...

  7. python常用类库_Python常用库

    Python常用库 一.time:时间处理模块 import time 1.time.time() time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). import tim ...

  8. 实战篇一 python常用模块和库介绍

    # -_-@ coding: utf-8 -_-@ -- Python 常用模块和库介绍 第一部分:json模块介绍 import json 将一个Python数据结构转换为JSON: dict_ = ...

  9. python常用函数-python常用函数精讲

    原标题:python常用函数精讲 返回值为bool类型的函数 bool是Boolean的缩写,只有真(True)和假(False)两种取值 bool函数只有一个参数,并根据这个参数的值返回真或者假. ...

最新文章

  1. Android--GridView实现动态文字排版
  2. ERROR OGG-01163 Bad column length (30) specified for column name in table TEST.demo_src, maximum all
  3. Asp.Net Core Filter 深入浅出的那些事-AOP
  4. python守护线程
  5. 进阶!基于CentOS7系统使用cobbler实现单台服务器批量自动化安装不同版本系统(week3_day5_part2)-技术流ken...
  6. Invest模型 ——生境质量计算
  7. 微信小程序 java实现登录界面_利用java实现一个微信小程序登录态维护功能
  8. php验证码一直错误,yii2.0验证码总是错误
  9. python函数找钱_找钱问题–动态规划一例
  10. Winxp U盘无法复制磁盘写保护解决办法。
  11. Java LPT,使用Java对LPT端口进行编程。真?
  12. 【渗透笔记】友情检测朋友公司并拿下shell过程
  13. 统计并输出空格或回车、数字字符和其他字符的个数。
  14. 果壳网科学人文章采集爬虫分享
  15. 直呼OMG!键盘残余热量可能泄露密码
  16. mysql快速导出数据(带列名)
  17. EasyAR_入门简单案例
  18. 微信小程序关于键盘行为的探索
  19. C语言软件分层的方法,单片机程序分层设计思想
  20. [iOS]将数字、日期转为中文

热门文章

  1. Java Review - 并发编程_并发List_CopyOnWriteArrayList源码剖析
  2. Spring5源码 - 13 Spring事件监听机制_@EventListener源码解析
  3. [并发编程] - 操作系统底层工作原理
  4. Java 8 - 03 Lambda 函数式接口Predicate Consumer Function Supplier
  5. Java-CentoOS 7安装JDK8 (rpm格式 和 tar.gz格式) 多JDK设置默认的Java 版本
  6. js base_64 解密
  7. maven 私服的使用及settings.xml的配置
  8. TypeScript的安装步骤、运行问题及代码的简单运行
  9. 本月 上月 php,显示本月,上月,今天,今年以及各时间起点与
  10. android 数据存储怎么保存图片_文章要保存为TXT文件,其中的图片要怎么办?Python帮你解决...