​

  在学习Python技术的时候,我们经常会遇到一些异常,例如导致程序在运行过程中出现的中断或退出,我们都称之为异常,大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。本期Python培训教程就算教大家关于Python异常机制的内容。

  Python培训教程分享:Python异常机制,首先我们要理解什么叫做异常?

  在程序运行过程中,总会遇到各种各样的问题和错误。有些错误是我们编写代码时自己造成的:比如语法错误、调用错误,甚至逻辑错误。还有一些错误,则是不可预料的错误,但是完全有可能发生的:比如文件不存在、磁盘空间不足、网络堵塞、系统错误等等。

  这些导致程序在运行过程中出现异常中断和退出的错误,我们统称为异常。大多数的异常都不会被程序处理,而是以错误信息的形式展现出来。

  异常的分类:

  异常有很多种类型,Python内置了几十种常见的异常,无需特别导入,直接就可使用。

  需要注意的是,所有的异常都是异常类,首字母是大写的!

  异常的危害:

  如果程序中一旦出现了异常的语句代码,则该异常就会立即中断程序的运行!

  因此:为了保证程序的正常运行,提高程序健壮性和可用性。我们应当尽量考虑全面,将可能出现的异常进行处理,而不是留在那里,任由其发生。

  基本语法:

  异常的基本结构:try except

  # (1)通用异常

  try:

  pass # 正常执行语句

  except Exception as ex:

  pass # 异常处理语句

  # (2)指定异常

  try:

  pass # 正常执行语句

  except <异常名>:

  pass # 异常处理语句

  #(3) 捕获多个异常

  # 捕获多个异常有两种方式,第一种是一个except同时处理多个异常,不区分优先级:

  try:

  pass # 正常执行语句

  except (<异常名1>, <异常名2>, ...):

  pass # 异常处理语句

  # 第二种是区分优先级的:

  try:

  pass # 正常执行语句

  except <异常名1>:

  pass # 异常处理语句1

  except <异常名2>:

  pass # 异常处理语句2

  except <异常名3>:

  pass # 异常处理语句3

  # 异常嵌套

  try:

  try:

  with open("abc") as f:

  pass

  except NameError as e:

  print(e)

  except OSError as e:

  print("OSError:",e.strerror)

  机制说明:

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

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

  如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常那么对应的except子句将被执行。

  在Python的异常中,有一个通用异常:Exception,它可以捕获任意异常。

  finally

  try:

  pass # 正常执行语句

  except Exception as e:

  pass # 异常处理语句

  finally:

  pass # 无论是否发生异常一定要执行的语句,比如关闭文件,数据库或者socket

  raise语句

  很多时候,我们需要主动抛出一个异常。Python内置了一个关键字raise,可以主动触发异常。

  raise可以抛出自定义异常,我们已将在前面看到了python内置的一些常见的异常类型。大多数情况下,内置异常已经够用了。但是有时候你还是需要自定义一些异常:自定义异常应该继承Exception类,直接继承或者间接继承都可以,例如:

  # 1.用户自定义异常类型

  class TooLongExceptin(Exception):

  "this is user's Exception for check the length of name "

  def __init__(self, len):

  self.len = len

  def __str__(self):

  return "输入姓名长度是" + str(self.len) + ",超过长度了"

  try:

  name = input("enter your name:")

  if len(name) > 5:

  raise TooLongExceptin(len(name))

  else:

  print(name)

  except TooLongExceptin as error: # 这里异常类型是用户自定义的

  print("打印异常信息:", error)

Python培训教程分享:Python异常机制相关推荐

  1. Python培训教程分享:Python模块如何导入__all__属性?

    本期小编为大家带来的Python培训教程是关于"Python模块如何导入__all__属性?"的内容,后面在工作中是会遇到Python模块这个工作内容的,Python模块的开头通常 ...

  2. Python培训教程分享:10款超好用的Python开发工具

    学会Python技术后,我们在参加工作的时候如果能有辅助工具的话,那么会很大程度的提高我们的工作效率,那么Python都有哪些好用的开发工具呢?下面小编就为大家详细的介绍一下10款超好用的Python ...

  3. Python培训教程分享:有哪些值得使用的爬虫开源项目?

    相信很多同学在学习Python技术的时候,都有学习到Python爬虫技术,爬虫技术在各大互联网公司都是非常常见的,可以帮助我们获取各种网站的信息,比如微博.B站.知乎等,本篇Python培训教程分享为 ...

  4. Python培训教程分享:visual studio编写python怎么样?

    本期小编要为大家介绍的Python培训教程就是关于"visual studio编写python怎么样?"的问题,但答案当然是可以的,据了解,vs2017.vs2019都集成了pyt ...

  5. Python培训教程分享:Python中选择结构是什么

    越来越多的人开始报名学习Python技术,那么学习Python技术不是一两天就能学会的,本期小编为大家推荐的Python培训教程主要讲的是"Python中选择结构是什么",下面来看 ...

  6. Python培训教程分享:如何实现pygame的初始化和退出操作?

    本期小编为大家介绍的Python培训教程是关于"如何实现pygame的初始化和退出操作?"的内容,pygame模块针对不同的开发需求提供了不同的子模块,例如显示模块.字体模块.混音 ...

  7. Python培训教程分享:“高效实用” 的Python工具库

    作为一名合格Python技术员,对于Python工具库的使用是少不了的,本期Python培训教程就为大家分享的是""高效实用" 的Python工具库",希望能够 ...

  8. Python培训教程:Python有哪些比较重要的内置函数?

    学习Python技术或者参加Python工作的小伙伴们应该都知道,在Python编程语言中会经常出现很多内置函数,很少有人清楚这些函数,但是它的功能是不可小觑的,下面小编就为大家详细介绍一下Pytho ...

  9. Python培训教程:Python内置数据结构之双向队列

    经常听说Python就是一门执行速度低的语言,可能是你的程序中使用了复杂的算法与数据结构,才会导致程序执行速率低的.在Python的标准库中提供了常见的数据结构工开发者使用,不仅执行速率比较快,还可以 ...

最新文章

  1. redis企业级应用(下)-如何维护redis的key
  2. 关于Delphi中的字符串的详细分析
  3. PAT甲级1113 Integer Set Partition:[C++题解]贪心
  4. 傍腾讯,切阿里,拼多多的千亿瞒天术
  5. NBU调用crontab备份
  6. android sharedpre,android 数据存储一SharedPrenference存储简单数据
  7. 网页打不开微信连接到服务器失败是怎么回事,微信打不开网页怎么回事?
  8. Qos令牌桶技术原理
  9. SQL语句Not IN优化方案
  10. 如何用Matlab计算相关系数和偏相关系数
  11. 电商后台管理系统——权限管理模块
  12. Vscode 新建HTML文件
  13. css斜线边框,CSS border斜线效果
  14. mset redis_Redis MSET 命令-Redis MSET命令详解教程-Redis MSET使用案例-嗨客网
  15. 硬盘MBR格式转换GPT,简单方法,你会吗?
  16. 2021年中职组“网络安全”赛项内蒙古自治区竞赛任务书
  17. ]获取android应用的MD5签名
  18. 独立看门狗和窗口看门狗的区别
  19. Win10 -- CUDA10 CUDNN 安装
  20. 北京格林深瞳算法实习生面试

热门文章

  1. FTP 命令的使用详解
  2. iOS中KVO模式的解析与应用
  3. python之XML文件解析
  4. Linux编程之自定义消息队列
  5. 虚拟机无法使用网卡桥接模式
  6. zabbix监控windows(03,08)
  7. 基于html5海贼王单页视差滚动特效
  8. 停电后,JavaScript定时器居然变慢了~
  9. phpcms中调用外部网站数据
  10. java Collection-Map 之 TreeMap