python中捕捉异常常用句式try...except.

try 语句按照如下方式工作;

首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。

如果没有异常发生,忽略 except 子句,try 子句执行后结束。

如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。

如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。

一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。

处理程序将只针对对应的 try 子句中的异常进行处理,而不是其他的 try 的处理程序中的异常。

一个except子句可以同时处理多个异常,这些异常将被放在一个括号里成为一个元组,例如:

except (RuntimeError, TypeError, NameError):pass

接下来我们来写一个具体的demo来看一下:

try:print(a)except NameError as e:print(e)>>>name 'a' is not defined

以上程序可看到try中执行一个未定义的变量,运行报错,报错信息则被下面except给接住了,并输出了具体的错误信息,错误的类型则为NameError 。

若我们将错误类型修改一下,情况如下示例:

try:print(a)except IOError as e:print(e)

会发现执行以上程序仍就报错了,这是因为错误类型本该是NameError ,我们却用IOError 进行接收,发现报错与except中不匹配,则仍旧执行了try中的程序。如果我们在执行时不清楚具体的错误类型,可以用异常的基类,

BaseException或者我们常用的错误类型集合Exception。

try:fh = open("testfiles", "r")print(fh.readlines())except BaseException as e:print(e)>>>[Errno 2] No such file or directory: 'testfiles'

try...except...else...

else后面是如果程序执行没有异常的话,则需要在执行一次else里面的内容,若存在异常,则不会执行else里面的内容。

try:print('执行程序')except Exception as e:print('异常信息是:'+str(e))else:print('没有异常')>>>执行程序>>>没有异常

try...finally...

finally后面是无论以上程序有没有异常报错,都会执行finally里面的内容,起到一个兜底的作用。

try:print(abc)except Exception as e:print('异常信息是:'+str(e))else:print('没有异常')finally:print('以上程序执行完毕')>>>异常信息是:name 'abc' is not defined>>>以上程序执行完毕

raise Exception

抛出异常,rasise是我们手动去抛出的一些异常,可能有些业务规则不满足我们的需求,程序又没有语法实质性的错误,所以我们可以自定义抛出错误。

a = 10if a>5:raise Exception('a不能超过5')>>> Traceback (most recent call last):>>> File "E:/Python/selenium/Learn/pythonFirst/firstApi.py", line 45, in >>> raise Exception('a不能超过5')>>>Exception: a不能超过5

还有一些时候我们捕捉到了异常,并不想对其进行处理,想再次把它抛出去,我们还可以这样写:

try:print(a)except NameError:print('代码执行中.......')raise>>>代码执行中.......>>>Traceback (most recent call last):>>> File "E:/Python/selenium/Learn/pythonFirst/firstApi.py", line 38, in >>> print(a)>>>NameError: name 'a' is not defined

以上可看到程序捕捉到了NameError,然后再次将其抛了出去。

python中使用什么来实现异常捕捉_python 异常捕捉相关推荐

  1. python中使用什么来实现异常捕捉_Python异常原理及异常捕捉实现过程解析

    关于选课程序,最近着实有点忙,没机会复习os.pickle两部分模块,所以数据储存和字典读取成为了一个问题,大致原理知道,但是具体操作可能还是得返回去再好好看看,所以目前就提前开始学习新的知识了,虽然 ...

  2. python中变量的作用域有几种_Python中变量的作用域(variable scope)

    http://www.crifan.com/summary_python_variable_effective_scope/ 解释python中变量的作用域 示例: 1.代码版 #!/usr/bin/ ...

  3. python中函数type可以测试对象类型_python类型检测最终指南--Typing模块的使用

    正文共:30429 字 预计阅读时间:76分钟 原文链接:https://realpython.com/python-type-checking/ 作者:Geir Arne Hjelle 译者:陈祥安 ...

  4. python中用于生成数字序列的函数_Python中的生成器?

    自从PEP 255引入以来,生成器就一直是python的重要组成部分. python中的Generator是一种特殊的例程,可用于控制循环的迭代行为.生成器类似于返回数组的函数.生成器具有参数,我们可 ...

  5. python中的缩进是长度统一吗_python缩进长度是否统一

    Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误. 在 Python 中,对于类定义.函数定义.流程控制语句.异常处理语句等, ...

  6. python中try语句的用法和作用_python基础知识三——try与except处理异常语句

    try/except介绍 与其他语言相同,在python中,try/except语句主要是用于处理程序正常执行过程中出现的一些异常情况,如语法错(python作为脚本语言没有编译的环节,在执行过程中对 ...

  7. python中没有++和--这两个运算符_python为什么没有++和 – – 运算符

    为什么python中没有++和--操作符? python中递增和递减运算符的相关post行为 因为-Python不是C! 这并不是因为它没有意义:把"x++"定义为"x+ ...

  8. python中执行linux命令(调用linux命令)_Python调用Linux bash命令

    import subprocess as sup  # 以下注释很多(为了自己以后不忘), 如果只是想在python中执行Linux命令, 看前5行就够了 # 3.5版本之后官方推荐使用sup.run ...

  9. python中for语句可以有else部分_Python中的for...else语句可以不写else吗?

    学习过程中遇到这个问题来交流下. 首先我们来看这个循环: for i in range(1,6): for k in range(1,i): print (k,end='')#可以设置end参数为空字 ...

最新文章

  1. 【控制】系统典型环节及其拉氏变换并绘制阶跃响应曲线和脉冲响应曲线
  2. linux java查看进程命令_linux一些查看进程情况的命令
  3. linux java -xms_为什么JVM比指定的-Xms消耗更少的内存?
  4. 联想小新锐7000主板型号_2020年高性价比游戏本选购推荐指南——7000价位游戏本推荐...
  5. 软件工程--第一周学习进度
  6. 复制两个类的相同属性
  7. 微软2月修复99个漏洞,含1个 0day
  8. ubunntu安装php7.0_乌班图Ubuntu 16.04下安装PHP 7过程详解
  9. Eclipse 中侧边栏、控制台、Server打不开怎么办?
  10. 设计自己的ImageLoader图片加载框架
  11. 今天博客园肿了吗?希望团队修复一下
  12. makeinfo:未找到命令
  13. Linu下建立svn版本库
  14. python反编译安卓_APK反编译得工具总结(转载)
  15. unity中向量夹角
  16. U盘打不开的常见原因有哪些?
  17. 华为鸿蒙主机,华为发布全屋智能主机以及V系列智慧屏 搭载鸿蒙系统
  18. 领英常见问题—如何提高邀请通过率与账号曝光量
  19. 浏览器及Windows常用快捷键汇总
  20. 【linux】md5sum 命令详解

热门文章

  1. Cooliris – 优雅的照片浏览工具[iOS/Android]
  2. Max Time-Delay Neural Networks
  3. Binaural Microphone
  4. 记录一次多线程与Map.keySet() 出现的“并发”问题
  5. 2018 牛客多校 2
  6. explain和profiling分析查询SQL时间
  7. bzoj2763 [JLOI2011]飞行路线
  8. WannaCry 勒索病毒用户处置指南
  9. mysqldump使用详解
  10. 【Win10应用开发】自定义磁贴通知的排版