目录

前言

什么是异常?

一、python标准异常

二、应用实例

1、try/except():/except

2、try/except...else

3、try-finally 语句

4、抛出异常

三、总结

前言

什么是异常?

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

一般情况下,在Python无法正常处理程序时就会发生一个异常。

异常是Python对象,表示一个错误。

当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

一、python标准异常

异常名称 描述 实例
BaseException 所有异常的基类
SystemExit 解释器请求退出
KeyboardInterrupt 用户中断执行(通常是输入^C)
Exception 常规错误的基类
StopIteration 迭代器没有更多的值
GeneratorExit 生成器(generator)发生异常来通知退出
StandardError 所有的内建标准异常的基类
ArithmeticError 所有数值计算错误的基类
FloatingPointError 浮点计算错误
OverflowError 数值运算超出最大限制
ZeroDivisionError 除(或取模)零 (所有数据类型) 1/0
AssertionError 断言语句失败
AttributeError 对象没有这个属性
EOFError 没有内建输入,到达EOF 标记
EnvironmentError 操作系统错误的基类
IOError 输入/输出操作失败
OSError 操作系统错误
import systry:f = open('myfile.txt')s = f.readline()i = int(s.strip())
except OSError as err:print("OS error: {0}".format(err))
WindowsError 系统调用失败
ImportError 导入模块/对象失败
LookupError 无效数据查询的基类
IndexError 序列中没有此索引(index)
KeyError 映射中没有这个键
MemoryError 内存溢出错误(对于Python 解释器不是致命的)
NameError 未声明/初始化对象 (没有属性)
printl('5月')
NameError: name 'printl' is not defined
UnboundLocalError 访问未初始化的本地变量
ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象
RuntimeError 一般的运行时错误
NotImplementedError 尚未实现的方法
SyntaxError Python 语法错误
IndentationError 缩进错误
def sum(x,y):try:return x+y
print(sum(2,4))
TabError Tab 和空格混用
SystemError 一般的解释器系统错误 while True print('Hello world')
TypeError 对类型无效的操作
def sum(x,y):return x+y
print(sum(2,4,5))
ValueError 传入无效的参数 while True:
    try:
        x = int(input("请输入一个数字: "))
        break
    except ValueError:
        print("您输入的不是数字,请再次尝试输入!")
UnicodeError Unicode 相关的错误
UnicodeDecodeError Unicode 解码时的错误
UnicodeEncodeError Unicode 编码时错误
UnicodeTranslateError Unicode 转换时错误
Warning 警告的基类
DeprecationWarning 关于被弃用的特征的警告
FutureWarning 关于构造将来语义会有改变的警告
OverflowWarning 旧的关于自动提升为长整型(long)的警告
PendingDeprecationWarning 关于特性将会被废弃的警告
RuntimeWarning 可疑的运行时行为(runtime behavior)的警告
SyntaxWarning 可疑的语法的警告
UserWarning 用户代码生成的警告

二、应用实例

1、try/except():/except

代码:

while True:try:x = int(input("请输入一个整数: "))breakexcept (RuntimeError, TypeError, NameError,ValueError):#利用元组一次性判断多种异常print("您输入的不是整数,请再次尝试输入!")except:pass#不是上述异常时不处理继续执行#break#不是上述异常时不处理直接跳出

效果:

解析:

可以利用元组一次性判断多种异常如:

except (RuntimeError, TypeError, NameError,ValueError):

print("您输入的不是整数,请再次尝试输入!")

也可以用break和pass来跳过和跳出异常

except:
                pass#不是上述异常时不处理继续执行
                #break#不是上述异常时不处理直接跳出

最后一个except子句可以忽略异常的名称,它将被当作通配符使用。你可以使用这种方法打印一个错误信息,然后再次把异常抛出

2、try/except...else

try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。

else 子句将在 try 子句没有发生任何异常的时候执行。

以下实例在 try 语句中判断文件是否可以打开,如果打开文件时正常的没有发生异常则执行 else 部分的语句,读取文件内容 。

for arg in sys.argv[1:]:try:f = open(arg, 'r')except IOError:print('cannot open', arg)else:print(arg, 'has', len(f.readlines()), 'lines')f.close()

使用 else 子句比把所有的语句都放在 try 子句里面要好,这样可以避免一些意想不到,而 except 又无法捕获的异常。

3、try-finally 语句

try-finally 语句无论是否发生异常都将执行最后的代码。

try:runoob()
except AssertionError as error:print(error)
else:try:with open('file.log') as file:read_data = file.read()except FileNotFoundError as fnf_error:print(fnf_error)
finally:print('这句话,无论异常是否发生都会执行。')

效果图:

4、抛出异常

        raise [Exception [, args [, traceback]]]

以下实例如果 x 大于 5 就触发异常:

x = 10
        if x > 5:
            raise Exception('x 不能大于 5。x 的值为: {}'.format(x))

三、总结

1、用try可以抛出我们易于理解的异常,帮助用户处理异常

2、运用try来调试我们的程序,可特定跳过或跳出

3、运用finally定义特定的语句的来抛出固定的语句。

try again Please try again(python)相关推荐

  1. 【Leetcode】 刷题之路1(python)

    leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...

  2. [LeetCode]题解(python):150-Evaluate Reverse Polish Notation

    题目来源: https://leetcode.com/problems/evaluate-reverse-polish-notation/ 题意分析: 给定一个数组,用这个数组来表示加减乘除,例如 [ ...

  3. [LeetCode]题解(python):108-Convert Sorted Array to Binary Search Tree

    题目来源: https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/ 题意分析: 给出一个排好序的数组,根据这 ...

  4. Task05:青少年软件编程(Python)等级考试模拟卷(一级)

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 电子学会 软件编程(Python)一级训 ...

  5. Task04:青少年软件编程(Python)等级考试模拟卷(一级)

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 电子学会 软件编程(Python)一级训 ...

  6. [LeetCode]题解(python):019-Remove Nth Node From End of List

    题目来源: https://leetcode.com/problems/remove-nth-node-from-end-of-list/ 题意分析: 这道题是给定一个链表,删除倒数第n个节点.提醒, ...

  7. (Python)numpy的argmax用法

    (Python)numpy的argmax用法 解释 还是从一维数组出发.看下面的例子. import numpy as np a = np.array([3, 1, 2, 4, 6, 1]) prin ...

  8. Windows环境 安装dlib cv2(python) 总结

    文章来源于网络! window下查看1099端口被哪个进程占用的命令(window下命令也类似linux啊,netstat -aon|findstr "1099&quo ...

  9. [LeetCode]题解(python):153-Find Minimum in Rotated Sorted Array

    题目来源: https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ 题意分析: 在一个不重复的翻转的数组里面找到最小那个 ...

  10. [LeetCode]题解(python):087-Scramble String

    题目来源: https://leetcode.com/problems/scramble-string/ 题意分析: 给定一个字符串,字符串展成一个二叉树,如果二叉树某个或多个左右子树颠倒得到的新字符 ...

最新文章

  1. ADS1.2安装教程
  2. 【转】SAP LIST 画框的FORM
  3. java项目没有bin_WebAPI项目似乎没有将转换后的web.config发布到bin文件夹?
  4. Windows2003 安装AD失败,未能为域创建GPO,出现了扩展错误 的解决方法
  5. Trip to America for 3 more months
  6. imail PHP,NT下基于邮件服务软件(IMAIL)的邮件发送程序–(本地版)-PHP教程,邮件处理...
  7. python扫描端口脚本_python扫描端口脚本
  8. [二次开发][Discuz!X] Discuz!二次开发基本知识
  9. 史上最大漏洞危机再生新变种,大量芯片受感染
  10. java_home的变量是_JAVA坏境变量中的JAVA_HOME path classpath 的设置与作用
  11. python识别车辆图片_opencv+python车辆识别
  12. 外贸独立站SEO技巧
  13. 入门级带你实现一个安卓智能家居APP(1)java版本
  14. start.bat批处理文件
  15. netty源码分析7-NioEventLoop-run方法疑难点
  16. c++语言解一元二次方程,初学C++新手跪求:用C++编 解一元二次方程 并 结果用复数表示。。...
  17. 机器学习-增量训练方法
  18. 云计算大会发言:接地气 高大上 科技感
  19. 【附源码】计算机毕业设计java制造型企业仓储管理系统设计与实现
  20. Spark创建DataFrame

热门文章

  1. 纤亿通带您了解光开关是如何工作的?
  2. Android Studio 安装、环境配置全家桶
  3. java飞机大战弹多角度_飞机大战开发05按角度发射的子弹和拖尾子弹的实现
  4. 重置出错?微软Win10平板Surface Pro 4重装系统教程详解
  5. 正则表达式 多个手机号之间使用英文逗号分隔
  6. 本科毕业设计------论文的摘要怎么写
  7. Android相关的毕设论文模板
  8. 【计算机二级python】综合题目
  9. 清华计算机系2018录取分数线,清华大学2018年各省录取分数线
  10. 在线图书推荐网 Python+Django+Mysql开发技术 个性化图书推荐系统 协同过滤推荐算法在图书网站中的运用 基于用户、物品的协同过滤推荐算法 个性化推荐算法、机器学习、分布式大数据、人工智