一、异常处理

在程序运行过程中,总会遇到各种各样的错误。程序一旦出错就停止运行了,此时就需要捕捉异常,通过捕捉到的异常,我们再去做对应的处理

写一个函数,实现除法运算

def calc(a,b):

return a/b

print(calc(5,1))#调用,没有错误,结果是5.0

>>> 5.0

print(calc(5,0))#再次调用,这时候就不对了,因为被除数不能为0,下面报了一堆错,程序停止运行了

>>> ZeroDivisionError: division by zero

这个时候我们就需要捕捉异常了,如果除数是0的话,就提示用户传入的参数不对,重新传入。

捕捉异常使用try....except....关键字,就是你在写代码的时候,先要考虑到这段代码可能会出现什么样的错误,然后做对应的处理,try里面就是包含你做处理的代码,except里面就是出了某种错误的时候,我怎么去处理,下面我们改下代码,捕捉异常

def calc(a, b):

try:

res = a / b

except ZeroDivisionError as e: # 如果是除数为0的错误,就返回除数不能为0,这个as e代表把返回错误的信息赋给e

return '除数不能为0!'

return res # 这个是如果没有这个异常的话,就返回结果

print(calc(5, 0)) # 这样再调用就不会出来错误了,就返回除数不能为0这个了。

上面就是捕捉异常,当然上面的只能捕捉到除数为0的错误,如果有别的错误就捕捉不到了;还有一个finally的用法,就是不管出不出异常都执行;try还有一个可以捕捉所有异常,还有else的用法,就是没出异常的时候怎么办,下面用代码来解释

def calc(a, b):

try: # 捕捉异常

res = a / b

except ZeroDivisionError as e:

return '除数不能为0!'

except KeyError as e: # 捕捉KeyError这个异常,当然这段代码没用到字典,所以不会有keyerror这个错误,我只是举个例子

return 'keyerror错误'

except Exception as e: # 这个是捕捉所有的异常,不管你有什么异常都可以捕捉到

print('其他异常')

return e # 返回错误信息

else: # 这个else和上面的try对应的,也就是不出异常的话走这里

print('没有出异常')

return res

finally: # 这个finally是不管这个段代码有没有出异常都走它

print('出没出异常都走我这里')

print(calc(5, 0)) # 出除数异常了,会返回除数不能为0!和执行finally里面的代码

print(calc(5, 1)) # 这个没有出异常,就会走else里面的东西,返回结果,也会执行执行finally里面的代码

print(calc(5, 's')) # 这个也走异常了,除数是字符串,肯定不能除,就走那个捕捉所有异常的代码了,也会执行执行finally里面的代码

二、常见的一些异常信息

AttributeError: 试图访问一个对象没有的属性,比如foo.x,但是foo没有属性x

IOError:输入/输出异常,一般是无法打开文件

ImportError: 无法导入模块或包,一般是路径问题或名称错误

IndentationError:代码没有正确对齐,属于语法错误

IndexError:下标索引超出序列边界,比如x只有三个元素,却试图访问x[3]

KeyError:试图访问字典里不存在的键

KeyboardInterrupt:Ctrl+C被按下

NameError:使用一个还未被赋予对象的变量

SyntaxError: 语法错误

TypeError: 传入对象类型与要求的不符

UnboundLocalError:试图访问一个还未被设置的局部变量,一般是由于在代码块外部还有另一个同名变量

ValueError: 传入一个调用者不期望的值,即使值的类型是正确的

注:本文摘自http://www.nnzhp.cn/archives/146

python捕获异常后处理_python异常捕获处理相关推荐

  1. python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03

    python网络编程-异常处理-异常捕获-抛出异常-断言-自定义异常-UDP通信-socketserver模块应用-03 参考文章: (1)python网络编程-异常处理-异常捕获-抛出异常-断言-自 ...

  2. 【python】-- try except (异常捕获)、断言

    [python]-- try except (异常捕获).断言 参考文章: (1)[python]-- try except (异常捕获).断言 (2)https://www.cnblogs.com/ ...

  3. python错误捕获例程_python 错误捕获机制分析

    python语言是编程中使用率在Top 3之内的语言.python语言以灵活与简单著称,那么越是灵活的语言越需要判断出错的功力. 简单示例 以下是一个简单的错误程序,被除数不可为0,那么看看该代码的执 ...

  4. python自动退出程序_python异常退出

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 异常是一个事件,该事件会在程序执行过程中发生,将影响程序的正常执行. 一般情况下 ...

  5. python中异常语句_python 异常

    导航: python的异常分为两种,1).语法错误,在python解释器的语法检测中不通过不能运行代码    2).异常,python程序运行期检测到的错误被称为异常.在没有做异常处理时,将终止程序并 ...

  6. 学python走向人生巅峰 (异常捕获)

    异常捕获:通过代码将可能出现异常的文件放入try中,然后如果出现异常就执行except中的命令 ''' 格式: try: 可能出现异常的代码 except: 如果出现了异常,就执行其中的代码 ''' ...

  7. python traceback 丢失_Python异常模块traceback用法实例分析

    本文实例讲述了python异常模块traceback用法.分享给大家供大家参考,具体如下: traceback模块被用来跟踪异常返回信息. 如下例所示: import traceback try: r ...

  8. python typeerror总结_python异常总结解析

    对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! python用异常对象(exception object)来表示异常情况.遇到错误后,会引发异常. ...

  9. python自定义全局异常_如何在python中进行全局异常捕获

    使用sys.excepthook函数进行全局异常的获取. 首先定义异常处理函数, 并使用该函数接收系统异常信息. import wx import sys class TestFrame(wx.Fra ...

最新文章

  1. sed学习系列---第3/3部分
  2. Remove Nth Node From End of List leetcode java
  3. summary_1.正念自控法
  4. 深度学习-TF函数-layers.concatenate用法 numpy数组维度
  5. Matlab二维绘图
  6. SQL UPDATE with INNER JOIN
  7. 2009年全国数模比赛,江苏三等奖名单
  8. 2021春招美团算法笔试题
  9. Keil出现“File has been changed outside the editor, reload?”提示
  10. Android 能让你少走弯路的干货整理
  11. iOS--上传AppStore时遇到的10个大坑
  12. Js 怎么遍历json对象所有key及根据动态key获取值
  13. Pycharm使用GPU,CUDA环境配置
  14. Spring Cloud 配置(E.SR5)
  15. stm32cubeide烧写程序_STM32 Cube IDE 下实现 IAP —— (1) 程序跳转
  16. 爬取豌豆荚app数据
  17. 第11课:scratchjr龟兔赛毛
  18. 计算机核心期刊新排名(转)
  19. obs媒体源没有声音_实现OBS视频连播,只需要安装这样一个小软件
  20. 揭秘:和中国过不去的顶级网络间谍“索伦之眼”

热门文章

  1. Sql Server 中锁的概念
  2. AFN 切换BaseUrl
  3. 理解Python的迭代器(转)
  4. JAVA面试题(2)
  5. 忘记mysql 密码的取回方法
  6. WSDL、SOAP、UDDI
  7. C语言的sizeof和strlen
  8. Java飞行记录器 JRockit Flight Recorder JFR诊断JVM的历史性能和操作
  9. TCMalloc:线程缓存的Malloc
  10. 码农技术炒股之路——数据库管理器、正则表达式管理器