python学到这,其实你应该是在入门到进阶的中间阶段了,但是还没有到进阶的阶段的,这是肯定的,因为进阶得可以从实际问题中解决问题的,比如写一个自动化的爬虫程序啊,对一件事物作大数据归纳分析,开发一个多人聊天服务器等等的。目前还不够的

好,今天,说一个python中很关键的知识点——异常

异常

1.什么是异常:

异常即报错,就像前面例题解析中出现的报错,就是异常,python运行时出现的错误就是异常

2.都有哪些异常:

首先得分个类:

1):语法错误:代码的结构和语法上有错误导致不能被解释器解释或者不能被编译器编译的错误

2):逻辑异常:不完整或者不合法的输入所致,或者无法执行在逻辑上无法生成、计算或者输出的过程等等

异常类:

SyntaxError:Python代码逻辑语法出错,不能执行

EOFError:用户输入文件末尾标志EOF(Ctrl+d)

IndexError:下标索引超出序列的边界

StopIteration:迭代器没有更多的值,这个在前面绝对见过

IndentationError:缩进或者语法错误,代码没有正确的对齐

TabError:Tab和空格混合使用

TypeError:不同类型间的无效操作或者说传入的对象类型与要求不符,比如字符串和数字拼接等

ValueError:传入无效或者说不被期望的参数,即使类型正确

ZeroDivisionError:除数为零

lOError:输入输出异常,基本是无法打开文件

AssertionError:断言语句(assert),当条件不符合运算规则则报错

AttributeError:试图访问一个对象没有的属性

FloatingPointError:浮点计算错误,浮点型参与计算时出现的错误

GeneratorExit:generator.close()方法被调用的时候,生成器对象的关闭方法调用

ImportError:无法导入模块或者包,基本是路径问题或者模块名不存在

KeyError:试图访问字典中不存在的键或者不存在的键值

KeyboardInterrupt:用户输入中断键(Ctrl+c),当程序还在运行,按ctrl+c手动结束程序时

MemoryError:内存溢出(可通过删除对象释放内存),内存被占满

NameError:试图访问一个不存在或者说还未赋予对象的变量变量

UnboundLocalError:NameError的子类。试图访问一个还未设置或者说还未初始化的全局变量,基本上是由于另有一个同名的本地变量(这个前一两章才说过)

NotImplementedError:尚未实现的方法

OSError:操作系统产生的异常,打开一个不存在的文件或者拒绝访问的文件时

OverflowError:数值运算超出最大限制

ReferenceError:弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象

RuntimeError:一般的运行时错误

SystemError:Python编译器系统错误,IDE的问题

SystemExit:Python编译器进程被关闭

UnicodeError:Unicode相关的错误(ValueError的子类)

UnicodeEncodeError:Unicode编码时的错误(UnicodeError的子类)

UnicodeDecodeError:Unicode解码时的错误(UnicodeError的子类)

UnicodeTranslateError:Unicode转换时的错误(UnicodeError的子类)

是不是觉得好多啊?我也觉得多,下面的是我归纳出的比较常见的异常,掌握这些基本够解决大部分问题了:

AssertionError

断言语句(assert),当条件不符合运算规则则报错

AttributeError

试图访问一个对象没有的属性

lOError

输入输出异常,基本是无法打开文

ImportError

无法导入模块或者包,基本是路径问题或者模块名不存在

IndentationError

缩进或者语法错误,代码没有正确的对齐

IndexError

下标索引超出序列的边界

KeyError

试图访问字典中不存在的键或者不存在的键值

KeyboardInterrupt

用户输入中断键(Ctrl+c),当程序还在运行,按ctrl+c手动结束程序时

NameError

试图访问一个不存在或者说还未赋予对象的变量变量

SyntaxError

Python代码逻辑语法出错,不能执行

TypeError

传入无效或者说不被期望的参数,即使类型正确

UnboundLocalError

NameError的子类。试图访问一个还未设置或者说还未初始化的全局变量,基本上是由于另有一个同名的本地变量

ValueError

传入一个不被期望的值,即使类型正确

3. 内置异常类的结构层次:

BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- Exception
      +-- StopIteration
      +-- ArithmeticError
      |    +-- FloatingPointError
      |    +-- OverflowError
      |    +-- ZeroDivisionError
      +-- AssertionError
      +-- AttributeError
      +-- BufferError
      +-- EOFError
      +-- ImportError
      +-- LookupError
      |    +-- IndexError
      |    +-- KeyError
      +-- MemoryError
      +-- NameError
      |    +-- UnboundLocalError
      +-- OSError
      |    +-- BlockingIOError
      |    +-- ChildProcessError
      |    +-- ConnectionError
      |    |    +-- BrokenPipeError
      |    |    +-- ConnectionAbortedError
      |    |    +-- ConnectionRefusedError
      |    |    +-- ConnectionResetError
      |    +-- FileExistsError
      |    +-- FileNotFoundError
      |    +-- InterruptedError
      |    +-- IsADirectoryError
      |    +-- NotADirectoryError
      |    +-- PermissionError
      |    +-- ProcessLookupError
      |    +-- TimeoutError
      +-- ReferenceError
      +-- RuntimeError
      |    +-- NotImplementedError
      +-- SyntaxError
      |    +-- IndentationError
      |         +-- TabError
      +-- SystemError
      +-- TypeError
      +-- ValueError
      |    +-- UnicodeError
      |         +-- UnicodeDecodeError
      |         +-- UnicodeEncodeError
      |         +-- UnicodeTranslateError
      +-- Warning
           +-- DeprecationWarning
           +-- PendingDeprecationWarning
           +-- RuntimeWarning
           +-- SyntaxWarning
           +-- UserWarning
           +-- FutureWarning
           +-- ImportWarning
           +-- UnicodeWarning
           +-- BytesWarning
           +-- ResourceWarning

下面一章讲解怎么运用异常,捕获异常

洗礼灵魂,修炼python(27)--异常处理(1)—>了解异常的更多相关文章

  1. python 27 异常处理

    目录 异常处理 1. 错误分类 2. 异常 3. 异常处理 4. 异常处理的两种方法 5. try的结构 5.1 结构一:单分支结构 5.2 结构二:多分支结构 5.3 结构三:万能异常 5.4 结构 ...

  2. 洗礼灵魂,修炼python(85)-- 知识拾遗篇 —— 深度剖析让人幽怨的编码

    编码 这篇博文的主题是,编码问题,老生常谈的问题了对吧?从我这一套的文章来看,前面已经提到好多次编码问题了,的确这个确实很重要,这可是难道了很多能人异士的,当你以为你学懂了,在研究爬虫时你发现你错了, ...

  3. 洗礼灵魂,修炼python(69)--爬虫篇—番外篇之feedparser模块

    feedparser模块 1.简介 feedparser是一个Python的Feed解析库,可以处理RSS ,CDF,Atom .使用它我们可从任何 RSS 或 Atom 订阅源得到标题.链接和文章的 ...

  4. python基础-异常处理

    一.错误和异常 程序中难免出现错误,而错误分成两种 1.1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def te ...

  5. what's the python之异常处理

    what's the 异常 python程序中会出现异常,即bug.若出现异常程序就报错,异常之后的代码就不会继续往下执行,这是一个正常程序不允许出现的,但是在某些程序交互的时候难免会因为用户输入问题 ...

  6. python的异常处理及异常类定义

    python的异常处理语法和大多数语言相似: try: try块的语句... except exceptiontype1 as var:#使用as语句获得本次捕获到的异常的实例var except块语 ...

  7. Python(异常处理)

    一 错误和异常 程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) 2.逻辑错误(逻辑错误) 什么是异常 异常就是程序运行时发 ...

  8. Python之异常处理(Day27)

    一.错误和异常 part1: 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def test: pass #语法错 ...

  9. Python编程-异常处理

    一.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def t ...

  10. python之异常处理模块

    一 . python 内置的异常类 在程序运行过程中,如果出现错误,python解释器会创建一个异常对象,并抛出给系统运行时.即程序终止正常执行流程,转而执行异常处理流程. 在某种特殊条件下,代码中也 ...

随机推荐

  1. IIS服务器多站点 的 https证书使用443端口 解决方案

    默认情况一个服务器的IIS只能绑定一个HTTPS也就是443端口 要实现多个站点对应HTTPS只能更改IIS配置 首先把每个站点分配个不同端口,如443.444.445…(证书一定要是多域的) 然后重 ...

  2. go微服务框架go-micro深度学习 rpc方法调用过程详解

    摘要: 上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取serv ...

  3. 在Windows环境中安装Neo4j

    图形数据库(Graph Database)是NoSQL数据库家族中特殊的存在,用于存储丰富的关系数据,Neo4j 是目前最流行的图形数据库,支持完整的事务,在属性图中,图是由顶点(Vertex),边( ...

  4. ACM学习<3>

    排序算法:      基本:冒泡,快速,选择,堆,插入,shell      多路并归: 1.冒泡排序:      思想:交换排序,通过相邻的交换来达到排序的目的.      流程:         ...

  5. paperpass

    推荐大家一个靠谱的论文检测平台.重复的部分有详细出处以及具体修改意见,能直接在文章上做修改,全部改完一键下载就搞定了.怕麻烦的话,还能用它自带的降重功能.哦对了,他们现在正在做毕业季活动, 赠送很多免 ...

  6. 【awesome-dotnet-core-learning】(2)-Sprache.Calc-表达式计算器

    [awesome-dotnet-core-learning](2)-Sprache.Calc-表达式计算器 示例代码托管在GITHUB上, 欢迎STAR! 严格来说, Sprache.Calc只是上一 ...

  7. php使用memcached缓存总结

    1. 查询多行记录,以sql的md5值为key,缓存数组(个人觉得最好用的方法) $mem = new Memcache(); $mem->connect('127.0.0.1',11211); ...

  8. 如何编写package.json配置NodeJS项目的模块声明

    在NodeJS项目中,用package.json文件来声明项目中使用的模块,这样在新的环境部署时,只要在package.json文件所在的目录执行 npm install 命令即可安装所需要的模块. ...

  9. [POI2006] PRO-Professor Szu

    Description \(n\) 个别墅以及一个主建筑楼,从每个别墅都有很多种不同方式走到主建筑楼,其中不同的定义是(每条边可以走多次,如果走边的顺序有一条不同即称两方式不同). 询问最多的不同方式 ...

  10. Java基础——Oracle(一)

    Oracle是目前最流行的数据库之一.功能强大,性能卓越.所以学起来比较困难.学习Oracle需要具备一定的基础.比如学习过一门编程语言,或者学过其他的数据库等,没有一些基础很难下手. 一.Oracl ...