python学习笔记5_异常
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_异常的更多相关文章
- Python学习笔记 - day8 - 异常
异常 在程序运行过程中,总会遇到各种各样的错误.有的错误是程序编写有问题造成的,比如本来应该输出整数结果输出了字符串,有的错误是用户输入造成的,比如让用户输入email地址,结果得到一个空字符串,这种 ...
- Python学习笔记006_异常_else_with
>>> # try-except语句 >>> >>> # try : >>> # 检测范围 >>> # exc ...
- 【目录】Python学习笔记
目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...
- 【python学习笔记】8.异常
[python学习笔记]8.异常 raise Exception: 抛出指定异常 try/except: 捕捉异常 except: 第一个参数是需要捕获的异常类型,可以是多个类型组成元组,第二个参数是 ...
- python学习笔记(六)文件夹遍历,异常处理
python学习笔记(六) 文件夹遍历 1.递归遍历 import os allfile = [] def dirList(path): filelist = os.listdir(path) for ...
- 【Python学习笔记之二】浅谈Python的yield用法
在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生 ...
- 雨痕 的《Python学习笔记》--附脑图(转)
原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意 ...
- Python学习笔记之生成器、迭代器和装饰器
这篇文章主要介绍 Python 中几个常用的高级特性,用好这几个特性可以让自己的代码更加 Pythonnic 哦 1.生成器 什么是生成器呢?简单来说,在 Python 中一边循环一边计算的机制称为 ...
- Python学习笔记之文件处理
1.打开和关闭 要打开文件可以使用函数 open(),它位于自动导入模块 io 中.函数将文件名作为唯一不可缺少的函数,并返回一个文件对象.它还有一个名叫 mode 的参数,用于指定文件模式,其可取值 ...
随机推荐
- 20180726 - Windows 10 Pro 下远程桌面连接提示“出现身份验证错误”
问题:Windows 10 Pro 下远程桌面连接提示“出现身份验证错误” [Window Title]远程桌面连接 [Content]出现身份验证错误.要求的函数不受支持 远程计算机: 192.16 ...
- http-server安装及运行
vue项目打包后会生成一个dist目录,我们想要直接运行dist目录...除了复制静态文件到服务器nginx目录下,然后启动nginx来启动项目, 另外一个办法就是安装http-server 直接启动 ...
- eShopOnContainers 知多少[3]:Identity microservice
首先感谢晓晨Master和EdisonChou的审稿!也感谢正在阅读的您! 引言 通常,服务所公开的资源和 API 必须仅限受信任的特定用户和客户端访问.那进行 API 级别信任决策的第一步就是身份认 ...
- 跨平台数据库工具Azure Data Studio
Azure Data Studio是一种跨平台数据库工具,适用于在Windows,MacOS和Linux上使用Microsoft系列内部部署和云数据平台的数据专业人员.Azure Data Studi ...
- php原生代码实现explode函数功能
在开始代码前要先介绍几个PHP函数: explode() 把字符串打散成数组 strpos() 返回字符串在另一个字符串第一次出现的位置(对大小写敏感) strstr() 查找 ...
- Java核心技术第八章——泛型程序设计(1)
1.泛型程序设计 泛型程序设计意味着编写的代码可以被很多不同类型的对象所重用.例如:不希望为了聚集String和Integer对象分别设计不同的类.(个人觉得此处说的聚集译为:创建一个对象,属性可以为 ...
- Fork/Join框架详解
Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架.Fork/Join框架要完成两件事情: 1.任务分 ...
- 1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))
容器化部署一套云服务系列 1. 容器化部署一套云服务之Jenkins 一.购买服务器 服务器
- 使用描述符实现property功能
# Author : Kelvin # Date : 2019/1/25 14:46 class Decproperty: def __init__(self, func): self.func = ...
- MATLAB程序:用FCM分割脑图像
MATLAB程序:用FCM分割脑图像 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 脑图像基础知识请看:脑图像:FCM算法介绍请看:聚类——FCM:数据 ...