python学习笔记5_异常

1、什么事异常

Python使用异常对象(exception object) 来表示异常情况。遇到错误会发生异常。

如果异常对象未被处理或被捕捉,程序就会用所谓的回溯(traceback,一种错误信息)终止执行。

每个异常都是一些类的(本例中是ZeroDivisionError)实例,这些实例可以被引发,并且可以用很多种方式进行捕捉,使程序捕捉异常并处理异常,从而避免整个程序崩溃。

2.、按自己的方式出错

所有的异常类,都是Exception的子类。

2.1、raise

要引发异常,要么是Exception的子类。或者实例参数调用raise。

返回,没有任何有关错误信息的普通错误。返回,一些有关“hyperdrive overload”的错误信息。

  • Exception   所有异常的基类
  • AttributeError   特性引用或赋值失败时引发
  • IOError   试图打开不存在文件(包括其他情况)时引发
  • IndexError  在使用序列中不存在的索引时引发
  • KeyError    在使用映射中不存在的键时引发
  • NameError 在找不到名字(变量)时引发
  • SyntaxError 在代码为错误形式时引发
  • TypeError 在内建操作或者函数应用于错误类型的对象时引发
  • ValueError 在内建操作或者函数应用于正确类型对象,但是该对象使用不合适的值时引发。
  • ZeroDivisionError 在除法或者模除操作的第二个参数为0时引发

自定义异常类

Class SomeCustomException(Exception):pass

3、捕获异常

这个功能可以使用 try/except来实现。

  如果捕获了异常,但又想重新引发它(也就是说传递异常),那就可以调用不带参数的raise。

4、多个except子句

因为继承eccept的字异常类有很多,如果只捕获一种错误(上例 捕捉ZeroDivisionError,如果除数为0正常被过捕获,当除数是一个字符串的时候那就回引发TypeError的错误,就被漏掉。),引其他错误将被漏掉。

5、用一个块捕获多个异常

用一块捕获多个类型的异常,可以把异常类型作为元祖列出。

6、捕获对象

希望在except子句中访问异常对象本身,可以使用两个参数。

7、全捕捉

一段代码捕捉所有的异常。可以使用except子句中忽略所有异常类。

隐藏所有的错误是很危险的事情,因为会异常所有程序员想不到的错误。

8、万事大吉----else子句

try:

print('正常代码块 ')

except:

print('当发生异常的时候执行。')

else:

print('这是一个没有任何异常的程序。')

9、最后。。。。。。

最后,是Finally子句。它可以用来在可能的异常后进行清理。

注意在2.5以前的版本中,finally是独立的,不能组合使用,2.5以后的版本可以随意使用了。

10、异常和函数

异常和函数能很自然的一起工作。如果异常在函数内部引发而不被处理,它就会传播至(浮到)调用的地方。,如果在那里也没处理异常,它就会继续传播,一直到达主程序(全局作用域)

如果那里没有异常处理程序,程序会带这堆栈跟踪中止。

python学习笔记5_异常的更多相关文章

  1. Python学习笔记 - day8 - 异常

    异常 在程序运行过程中,总会遇到各种各样的错误.有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种 ...

  2. Python学习笔记006_异常_else_with

    >>> # try-except语句 >>> >>> # try : >>> # 检测范围 >>> # exc ...

  3. 【目录】Python学习笔记

    目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...

  4. 【python学习笔记】8.异常

    [python学习笔记]8.异常 raise Exception: 抛出指定异常 try/except: 捕捉异常 except: 第一个参数是需要捕获的异常类型,可以是多个类型组成元组,第二个参数是 ...

  5. python学习笔记(六)文件夹遍历,异常处理

    python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...

  6. 【Python学习笔记之二】浅谈Python的yield用法

    在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...

  7. 雨痕 的《Python学习笔记》--附脑图(转)

    原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意 ...

  8. Python学习笔记之生成器、迭代器和装饰器

    这篇文章主要介绍 Python 中几个常用的高级特性,用好这几个特性可以让自己的代码更加 Pythonnic 哦 1.生成器 什么是生成器呢?简单来说,在 Python 中一边循环一边计算的机制称为 ...

  9. Python学习笔记之文件处理

    1.打开和关闭 要打开文件可以使用函数 open(),它位于自动导入模块 io 中.函数将文件名作为唯一不可缺少的函数,并返回一个文件对象.它还有一个名叫 mode 的参数,用于指定文件模式,其可取值 ...

随机推荐

  1. SpringCloud的分布式配置及消息总线

    1.在搭建分布式配置时,我们大概看下分布式配置的流程 如图所示: 当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现 ...

  2. IDEA zookeeper插件的使用

    安装插件 file-settings-Plugins 搜索zookeeper,并安装,安装完成后重启IDEA 配置IP地址和端口 位于Other settings 中的zookeeper选项中配置 注 ...

  3. css+js调整当前界面背景音量

    展示效果 html代码: <div> <audio id="audio" controls src="https://dbl.5518pay.com/r ...

  4. MongoDB 文章目录

    基础: MongoDB入门系列(一):基础概念和安装 MongoDB入门系列(二):Insert.Update.Delete.Drop MongoDB入门系列(三):查询(SELECT) MongoD ...

  5. 学习EtherCAT的感想

    第一次进入到自动化领域,接触的第一个项目就是EtherCAT的测试.初次接触以太网,有一点茫然,百度看了很多关于EtherCAT的介绍,看了一些相关的论文.EtherCAT的资料很多:ETG1000. ...

  6. React教程(一) React介绍与搭建

    React的介绍: React来自于Facebook公司的开源项目 React 可以开发单页面应用 spa(单页面应用) react 组件化模块化 开发模式 React通过对DOM的模拟(虚拟dom) ...

  7. DotNetCore跨平台~EFCore2.0连接Mysql的烦恼-已解决

    回到目录 对于传统的nuget包,我们习惯上用官方或者大型组织的,因为它们比较考靠谱,但就在前两天.net core2.0发布后,我把efcore也升级到2.0了,mysql.EfCore也升级到支持 ...

  8. 一套代码小程序&Web&Native运行的探索06——组件系统

    接上文:一套代码小程序&Web&Native运行的探索05——snabbdom 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tre ...

  9. C#之使类型参数--泛型

    1.泛型是什么 泛型的就是“通用类型”,它可以代替任何的数据类型,使类型参数化,从而达到只实现一个方法就可以操作多种数据类型的目的. 2.为什么使用泛型 举一个比较两个数大小的例子: 以上例子实现in ...

  10. C# 添加Word页眉、页脚和页码

    在Word文档中,我们可以通过添加页眉.页脚的方式来丰富文档内容.添加页眉.页脚时,可以添加时间.日期.文档标题,文档引用信息.页码.内容解释.图片/LOGO等多种图文信息.同时也可根据需要调整文字或 ...