【python之路32】python异常处理
一、捕获异常
1、try except
#!usr/bin/env python
# -*- coding:utf-8 -*-
num = input("请输入一个数字:")
try:
int_num = int(num) + 100
print(int_num)
except:
print("您输入的不是数字")
2、捕获具体的错误信息
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 更多异常
更多异常
例如:
dic = ["wupeiqi", 'alex']
try:
dic[10]
except IndexError, e:
print e dic = {'k1':'v1'}
try:
dic['k20']
except KeyError, e:
print e s1 = 'hello'
try:
int(s1)
except ValueError, e:
print e
try except Exception as e
#!usr/bin/env python
# -*- coding:utf-8 -*-
num = input("请输入一个数字:")
try:
int_num = int(num) + 100
print(int_num)
except Exception as e: #Exception类所有异常都能捕获,是所有异常类的基类
print(e)
3、捕获多个异常
#!usr/bin/env python
# -*- coding:utf-8 -*-
num = input("请输入一个数字:")
try:
int_num = int(num) + 100
print(int_num)
except ValueError as e: #只捕获ValueError类型,捕获到后后面的except代码不再运行
print("发生ValueError")
except IndexError as e: #只捕获IndexError类型,捕获到后后面的except代码不再运行
print("发生IndexError")
except Exception as e: #捕获所有异常类型
print("发生Exception")
4、完整的异常结构
#!usr/bin/env python
# -*- coding:utf-8 -*-
try:
#要捕获异常的代码语句
pass
except ValueError as e:
#如果捕获到ValueError异常则执行本代码块
print(e)
except Exception as e:
#如果发生错误ValueError没有捕获到,则执行代码块
print(e)
else:
#如果try下的代码块没有异常则执行该代码块
print("未发生异常")
finally:
#不管发布发生错误都会执行该代码块
print("end")
5、可以自己抛出异常信息
#!usr/bin/env python
# -*- coding:utf-8 -*-
input_num = input("请输入一个大于0数字:")
try:
if int(input_num) <= 0:
raise Exception("数字不能小于等于0") #创建一个Exception对象
except Exception as e:
print(e)
上面代码中e为Exception的对象,print(e)为什么能打印出文本呢,其原理是利用__str__(self)特殊方法的:
#!usr/bin/env python
# -*- coding:utf-8 -*-
class Foo:
def __init__(self,ef):
self.ef = ef
def __str__(self):
return self.ef exception = Foo('出错了。。。。')
print(exception) #出错了。。。。,实际调用的是__str__(self)方法
6、断言
一般用于测试,assert 条件 ,如果条件成立执行,条件不成立直接抛出异常
#!usr/bin/env python
# -*- coding:utf-8 -*-
assert 2 == 2
assert 1 > 2 #因为条件不成立所以会直接抛异常
【python之路32】python异常处理的更多相关文章
- Python之路,Day4 - Python基础4 (new版)
Python之路,Day4 - Python基础4 (new版) 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 ...
- Python之路,Day1 - Python基础1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Python之路,Day1 - Python基础1(转载Alex)
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Python之路,Day1 - Python基础1 --转自金角大王
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Python之路,Day4 - Python基础4
一.函数 (一)背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 1 2 3 4 ...
- Python之路:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- python之路:python基础3
---恢复内容开始--- 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 温故知新 1. 集合 ...
- 【Python之路】Python目录
Python基础1 -- Python由来.Python种类.编码方式, Python基础2 -- Python运算符.数据类型.enumerate.range.for循环 python基础3 -- ...
- Python之路:Python简介
Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间他为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承 ...
- Python之路-初识python及环境搭建与测试(Python安装、Anaconda安装、PyCharm安装)
一.认识Python 起源 Python的作者是著名的“龟叔”Guido van Rossum,他希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻 ...
随机推荐
- ant的build.xml备份
<?xml version="1.0" encoding="UTF-8" ?> <project default="rerun&qu ...
- 记录redis安装及常用命令
Redis安装及常用命令 一.安装 1.下载,解压,进入redis解压目录,make. make PREFIX=目录/redis install :安装到指定目录文件名为redis. 2.将解压目录里 ...
- TF坐标变换
一.什么是TF 二.TF使用方法 三.TF包内的指令工具 四.相关API 1.广播变换发布坐标之间的坐标关系 #include <ros/ros.h> #include <tf ...
- zabbix自动发现主机(转)
zabbix自动发现主机 2018年06月15日 18:02:52 loyal-Wang 阅读数:817更多 个人分类: zabbix 版权声明:本文为博主原创文章,转载请注明出处. https: ...
- 2019牛客暑假多校赛(第二场) F和H(单调栈)
F-Partition problem https://ac.nowcoder.com/acm/contest/882/F 题意:输入一个数n,代表总共有2n个人,然后每个人对所有人有个贡献值,然后问 ...
- Python ----键抠图
背景 这段时间,经常有人来找我,说我是学计算机的,能不能帮他p一下证件照,我只想说,MMP的,我是学计算机的不错,可我不会ps阿. 我想了一会,python 这么火,能不能来个自动抠图,说好就干吧 介 ...
- 0617Python-介绍、三种运行方式、变量、标识符和关键字、获取属性
一.什么是自动化测试? 1.定义 自动:让机器自己动,就是自动 自动化:让机器按照人类的要求,把软件的所有功能遍历一遍 2.传统测试和自动化测试的区别 传统测试:繁琐.机械.门槛低.工资低 自动化测试 ...
- Spring Boot Starter自定义实现三步曲
实现自定义的spring boot starter,只需要三步: 1.一个Bean 2.一个自动配置类 3.一个META-INF/spring.factories配置文件 下面用代码演示这三步. 项目 ...
- .net 设置默认首页
解决方案一:设置默认首页 在 Web.config 文件中,加上红色字体间的内容 <configuration> <system.web> <compilation de ...
- 4、uboot对设备树的支持
第01节_传递dtb给内核 : r2 a. u-boot中内核启动命令: bootm <uImage_addr> // 无设备树,bootm 0x30007FC0 bootm <uI ...