python基础:异常捕捉
一、异常
python在程序运行过程中,可能会出现一些错误和异常,导致程序停止运行。我们可以通过捕捉异常,并对异常进行处理,使得程序可以正常运行
异常有很多类型,可以根据类型挨个捕捉。也可统一捕获:
异常类型:
| 异常名称 | 描述 |
|---|---|
| BaseException | 所有异常的基类 |
| SystemExit | 解释器请求退出 |
| KeyboardInterrupt | 用户中断执行(通常是输入^C) |
| Exception | 常规错误的基类 |
| StopIteration | 迭代器没有更多的值 |
| GeneratorExit | 生成器(generator)发生异常来通知退出 |
| StandardError | 所有的内建标准异常的基类 |
| ArithmeticError | 所有数值计算错误的基类 |
| FloatingPointError | 浮点计算错误 |
| OverflowError | 数值运算超出最大限制 |
| ZeroDivisionError | 除(或取模)零 (所有数据类型) |
| AssertionError | 断言语句失败 |
| AttributeError | 对象没有这个属性 |
| EOFError | 没有内建输入,到达EOF 标记 |
| EnvironmentError | 操作系统错误的基类 |
| IOError | 输入/输出操作失败 |
| OSError | 操作系统错误 |
| WindowsError | 系统调用失败 |
| ImportError | 导入模块/对象失败 |
| LookupError | 无效数据查询的基类 |
| IndexError | 序列中没有此索引(index) |
| KeyError | 映射中没有这个键 |
| MemoryError | 内存溢出错误(对于Python 解释器不是致命的) |
| NameError | 未声明/初始化对象 (没有属性) |
| UnboundLocalError | 访问未初始化的本地变量 |
| ReferenceError | 弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
| RuntimeError | 一般的运行时错误 |
| NotImplementedError | 尚未实现的方法 |
| SyntaxError | Python 语法错误 |
| IndentationError | 缩进错误 |
| TabError | Tab 和空格混用 |
| SystemError | 一般的解释器系统错误 |
| TypeError | 对类型无效的操作 |
| ValueError | 传入无效的参数 |
| UnicodeError | Unicode 相关的错误 |
| UnicodeDecodeError | Unicode 解码时的错误 |
| UnicodeEncodeError | Unicode 编码时错误 |
| UnicodeTranslateError | Unicode 转换时错误 |
| Warning | 警告的基类 |
| DeprecationWarning | 关于被弃用的特征的警告 |
| FutureWarning | 关于构造将来语义会有改变的警告 |
| OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
| PendingDeprecationWarning | 关于特性将会被废弃的警告 |
| RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
| SyntaxWarning | 可疑的语法的警告 |
| UserWarning | 用户代码生成的警告 |
二、捕捉异常:
1、按类型捕捉
示例1:
ValueError 类型异常捕获
first = input('请输入除数:')
second = input('请输入被除数:')
try:
first = int(first)
second = int(second)
res = first/second
li = [1,2,3,4]
except ValueError as e: #这个e代表错误信息,如果上面的两行代码出现了 ValueError这个错,就执行下面代码。ValueError 代表异常类型,参数无效。比如first和second输入汉字,这样int()就转换不了,报错
print(e)
print('请输入整数')
else: #如果没有报上面那个异常,则执行此块。不是必须写的
print('没有出错')#这个是没有异常的时候走
print(res)
finally:#不管出错或者没有出错都会执行它,也不是必须写的。
print('我是finally')
示例2:
ZeroDivisionError 类型异常捕获
first = input('请输入除数:')
second = input('请输入被除数:')
try:
first = int(first)
second = int(second)
res = first/second
li = [1,2,3,4]
except ZeroDivisionError as e:#如果second为0,则会报这个ZeroDivisionError异常,若捕获则执行下面代码
print(e)
print('除数不能为0')
else: #没有出错,也不是必须写的
print('并没有出错')#这个是没有异常的时候走
print(res)
finally:#不管出错或者没有出错都会执行它,也不是必须写的。
print('我是finally')
2、捕获所有异常
first = input('请输入除数:')
second = input('请输入被除数:')
try:
first = int(first)
second = int(second)
res = first/second
li = [1,2,3,4]
except Exception as e: #上面代码出异常的时候走这里,不管什么异常,只要出异常就会捕捉到
print(e)
print('出错了')
else: #没有出错,也不是必须写的
print('并没有出错')#这个是没有异常的时候走
print(res)
finally:#不管出错或者没有出错都会执行它,也不是必须写的。
print('我是finally')
python基础:异常捕捉的更多相关文章
- python基础-异常(exception)处理
python基础-异常(exception)处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 程序中难免出现错误,而错误分成两种,即语法错误和逻辑错误.语法错误根本过不了pyth ...
- python的异常捕捉
你可能会说既然有万能异常Exception,那么我直接用上面的这种形式就好了,其他异常可以忽略 你说的没错,但是应该分两种情况去看 1.如果你想要的效果是,无论出现什么异常,我们统一丢弃,或者使用同一 ...
- python基础--异常,对象和迭代器
异常处理 面向对象 迭代器和生成器 python异常处理 下面代码触发了一个FileNotFoundError >>> open("notexist.txt") ...
- python基础-----异常问题
---恢复内容开始--- 当发生python不知所措的错误时,python会创建一个异常对象, 如果你编写处理该异常的代码,程序将会继续运行: 如果你未对异常做任何处理,程序将会停止,并显示一个tra ...
- Python基础——异常
捕捉所有异常 for i in range(10): try: input_number=input('write a number') if input_number=='q': break res ...
- python基础-异常和模块
异常的定义 #encoding=utf-8 import sys try: 1/0 print "never executed!" except ZeroDivisionError ...
- 【原】Python基础-异常
def cacls(x, y): try: return x/y except ZeroDivisionError: print("y can not be zerp") exce ...
- python try详细说明(python的异常捕捉模块)
#自己常用 try: pass except Exception as e: print("break for :"+str(e)) # 划重点: 1. 正常执行try情况 pri ...
- Python基础-异常
异常捕获 常见异常类型 Exception:顶级异常类,大部分异常类都是它的子类.SyntaxError:语法错误TypeError:类型错误ValueError:值错误NameError:找不到名称 ...
- Python基础学习笔记(十三)异常
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-exceptions.html Python用异常对象(excep ...
随机推荐
- 2020-06-20:一句话总结ZK?
福哥答案2020-06-20: 这道题价值不大,但是面试题里有这道题. 分布式协调服务,注册服务和发现,树形结构,监听机制,过半机制. ZooKeeper是源代码开放的分布式协调服务,由雅虎公司创建, ...
- Window C盘 占满原因之一
最近一段时间,突然C盘 莫名奇妙的满了 ,也没有中毒. 最后查找是因为安装了SQL Reporting 的原因 C:\Program Files\Microsoft SQL Server Repor ...
- ThinkPHP 6.0 基础教程 - 安装
ThinkPHP6.0 的环境: PHP >= 7.1.0 我本地环境: Win10 PhpStudy 安装 PhpStudy 如果你已经安装 PhpStudy 或其他环境,请忽略这里 安装方法 ...
- dota2输入法无候选框?
win10自带的微软拼音在dota2中不会显示候选框,或者说是选词框. 这种情况下只能选择其他输入法. 我选择的是搜狗输入法(此随笔添加时的最新版),在dota2中有选词框. 网上有些人说要改兼容性, ...
- 牛X!看完阿里P8架构师推荐的spring三剑客,成功涨薪5k
一直以来,Spring都被Java程序员视为杀手级别的应用,是为简化Java EE应用程序的开发为目标而创建的.Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于 ...
- 【MySQL】记一次线上重大事故:二狗子竟然把线上数据库删了!!
写在前面 估计二狗子这几天是大姨夫来了,心情很郁闷,情绪也很低落,工作的时候也有点心不在焉.让他发个版本,结果,一行命令下去把线上的数据库删了!你没听错:是删掉了线上的数据库!运营那边顿时炸了锅:怎么 ...
- Windows server 2008R2 中sql server的搭建
一.安装sql server Step1:下载sql server 2008 r2 standard,解压到Windows的C:\下. Step2:打开安装程序,进行sql server的安装 Ste ...
- extJS--尚
ExtJS依赖JavaScript,JavaScript推荐两本书:<JavaScript高级程序设计>初阶阶段, <JavaScript设计模式>中级阶段 fun1();// ...
- Java之NIO与IO比较分析
Java NIO(New Input/Output)——新的输入/输出API包——是2002年引入到J2SE 1.4里的.Java NIO的目标是提高Java平台上的I/O密集型任务的性能. 简单描述 ...
- JavaScript学习系列博客_34_JavaScript RegExp对象
RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 创建 RegExp 对象的语法(构造函数方式): pattern:正则表达式,attributes:匹配模式 ...