之前的文章我们简单介绍了一下 Python 的面向对象,本篇文章我们来看一下 Python 中异常处理。

我们在写程序时,有可能会出现程序报错,但是我们想绕过这个错误执行操作。即使我们的程序写的没问题,但是在运行时也可能会出错,这是我们就需要将异常抛出来解决,如下代码:

  1. print(name)
  2. print("1111")

在上面的代码中,我们想打印输出 name 值,但是我们并没有提前声明该变量,所以程序会抛出异常,但我们并不想让程序报错,可以如下解决:

  1. try:
  2. print(name)
  3. except NameError:
  4. print("发生了异常") # 发生了异常
  5. print("") #

根据上面的代码不难发现,我们可以使用 try except 语法来跳过这个异常执行接下来的代码。

异常处理的详细写法如下:

  1. try:
  2. print("")
  3. except (NameError,FileExistsError):
  4. print(NameError,FileExistsError)
  5. print("如果捕获到异常后做的处理")
  6. except Exception as ret:
  7. print("如果用了 Exception,那么意味着只要上面的 except 没有捕获到异常,这个 except 一定会捕获到")
  8. print(ret)
  9. else:
  10. print("没有异常才会执行的功能")
  11. finally:
  12. print("无论有没有异常都执行")
  13.  
  14. print("")
  15.  
  16. '''
  17. 123
  18. 没有异常才会执行的功能
  19. 无论有没有异常都执行
  20. 1111
  21. '''

从上面的输出结果我们可以看出,当程序没有错误正常执行时,程序执行了 else,finally 两个异常处理。

  1. try:
  2. print(name)
  3. except (NameError,FileExistsError):
  4. print(NameError,FileExistsError)
  5. print("如果捕获到异常后做的处理")
  6. except Exception as ret:
  7. print("如果用了 Exception,那么意味着只要上面的 except 没有捕获到异常,这个 except 一定会捕获到")
  8. print(ret)
  9. else:
  10. print("没有异常才会执行的功能")
  11. finally:
  12. print("无论有没有异常都执行")
  13.  
  14. print("")
  15.  
  16. '''
  17. <class 'NameError'> <class 'FileExistsError'>
  18. 如果捕获到异常后做的处理
  19. 无论有没有异常都执行
  20. 1111
  21. '''

从上面的输出结果我们可以看出,如果程序报错且第一个 except 捕获到异常,程序执行了第一个 except,finally 两个异常处理。

  1. try:
  2. 1/0
  3. except (NameError,FileExistsError):
  4. print(NameError,FileExistsError)
  5. print("如果捕获到异常后做的处理")
  6. except Exception as ret:
  7. print("如果用了 Exception,那么意味着只要上面的 except 没有捕获到异常,这个 except 一定会捕获到")
  8. print(ret)
  9. else:
  10. print("没有异常才会执行的功能")
  11. finally:
  12. print("无论有没有异常都执行")
  13.  
  14. print("")
  15.  
  16. '''
  17. 如果用了 Exception,那么意味着只要上面的 except 没有捕获到异常,这个 except 一定会捕获到
  18. division by zero
  19. 无论有没有异常都执行
  20. 1111
  21. '''

从上面的输出结果我们可以看出,如果程序报错且第二个 except 捕获到异常,程序执行了第二个 except,finally 两个异常处理。

在编写程序中,我们不可避免地会使用抛出异常来处理我们的程序使其能正常运行,但是我们应尽量少的使用跑出异常。

Python 从入门到进阶之路(六)的更多相关文章

  1. Python 从入门到进阶之路(一)

    人生苦短,我用 Python. Python 无疑是目前最火的语言之一,在这里就不再夸他的 NB 之处了,本着对计算机编程的浓厚兴趣,便开始了对 Python 的自学之路,并记录下此学习记录的心酸历程 ...

  2. Python 从入门到进阶之路(七)

    之前的文章我们简单介绍了一下 Python 中异常处理,本篇文章我们来看一下 Python 中 is 和 == 的区别及深拷贝和浅拷贝. 我们先来看一下在 Python 中的双等号 == . == 是 ...

  3. Python 从入门到进阶之路(五)

    之前的文章我们简单介绍了一下 Python 的函数,本篇文章我们来看一下 Python 中的面向对象. Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是 ...

  4. Python 从入门到进阶之路(四)

    之前的文章我们简单介绍了一下 Python 的几种变量类型,本篇文章我们来看一下 Python 中的函数. 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性, ...

  5. Python 从入门到进阶之路(三)

    在之前的文章我们介绍了一下 Python 中 if while for 的使用,本章我们来看一下 Python 中的变量类型. 在 Python 定义变量时的规则是 变量名 = 变量 ,Python ...

  6. Python 从入门到进阶之路(二)

    之前的文章我们对 Python 语法有了一个简单的认识,接下来我们对 Python 中的 if while for 做一下介绍. 上图为 if 判断语句的流程,无论任何语言,都会涉及到判断问题,if ...

  7. python快速入门及进阶

    python快速入门及进阶 by 小强

  8. Python 爬虫从入门到进阶之路(六)

    在之前的文章中我们介绍了一下 opener 应用中的 ProxyHandler 处理器(代理设置),本篇文章我们再来看一下 opener 中的 Cookie 的使用. Cookie 是指某些网站服务器 ...

  9. Python 爬虫从入门到进阶之路(十六)

    之前的文章我们介绍了几种可以爬取网站信息的模块,并根据这些模块爬取了<糗事百科>的糗百内容,本章我们来看一下用于专门爬取网站信息的框架 Scrapy. Scrapy是用纯Python实现一 ...

随机推荐

  1. python学习-def

    # 函数# 实现了某一特定功能.# 可以重复使用. # len() 功能:获取长度.# input() 功能: 控制台输入# print() 功能:输出 # 语法 关键字def"" ...

  2. C语言每日一练——第1题

    一.程序功能 程序的功能是:将大于整数m且紧靠m的k个素数存入数组xx.并把in.dat文件的内容输入到程序,并把输出结果输出道out.dat文件夹中例如:若输入17,5 则应该输入:19,23,29 ...

  3. freemarker数据格式化问题(即数值超过三位后自动添加逗号问题)

    实际数据:{value:1007, name:'通用设备'}, 浏览器回显数据: 得出: freemarker 当数据超过3位的时候,会自动用逗号截取 格式如:1,007 解决办法: 加?c,如:${ ...

  4. 张亦总结《AG百家乐庄闲,龙虎中下三路技巧和三株路的运用》

    ​​关于三珠路的各种打法,这里我做个详细的讲解 三珠路的打法源于澳门赌王叶汉,需要了解赌王叶汉的著作<BJL投注公式>的可以加我Q:<10353581>进行详细解答 叶汉的打法 ...

  5. SpringMVC 数据交互

    为什么使用JSON进行数据交互? JSON数据格式比较简单.解析比较方便,在接口调用及HTML页面Ajax调用时较常用. JSON交互方式 请求是Key/Value,响应是JSON(推荐使用) 请求是 ...

  6. div拖拽效果 JQuery

    <!DOCTYPE html> <html> <head> <meta name="description" content=" ...

  7. CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现

    CVE-2018-12613-phpmyadmin4.8.1远程文件包含漏洞复现 参考文章1 参考文章2 By:Mirror王宇阳 漏洞原理 攻击者利用发现在服务器上包含(查看和潜在执行)文件的漏洞. ...

  8. 数据库性能提升利器—Mycat数据切分

    一.前言      数据库是每个系统都不可缺少的东西,里面记录了系统各种数据资料.但是如今的数据膨胀的时代,数据库性能不能满足我们的需要了.所以我们要对数据库进行强化,就用到了Mycat. 二.何为数 ...

  9. Linux ipv6 无状态 设置为 eui64

    Linux ipv6 无状态 设置为 eui64 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-08-22. 无状态的ipv6有eui64和stable-privacy模式, 在家 ...

  10. Openshift 自建DDNS动态域名

    某种情况下如openstack或者openshift/kubernetes软件部署过程由于需要标准的 域名系统(DNS UPDATE)RFC 2136中的动态更新功能, 但是现有的阿里云/华为云均不提 ...