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 的参数,用于指定文件模式,其可取值 ...
随机推荐
- Microsoft SQL Server 双机热备份,实时同步
1.两台服务器,主服务器,从服务器,两台服务器都安装SQL Server 2008R2并且安装相同表结构的数据库(需要实时同步的数据库) 2.主服务器数据库安装完毕,打开SQL Server 配置管理 ...
- Windows 2008 打开声音重定向来听到远程主机音频
Windows 2008 Server在默认情况下,是禁止使用桌面桌面连接后播放声音的(提示音频服务未启用).可以通过下面的方法启用音频: 管理工具->远程桌面服务->远程桌面会话主机配置 ...
- pyquery 学习
pyquery 是python仿照jQuery的严格实现,语法与jQuery几乎完全相同,所以对于学过前端的朋友们可以立马上手,没学过的小朋友也别灰心,我们马上就能了解到pyquery的强大. 1 安 ...
- Error:"Java patch PatchPasswordEncryption_J10001 is being applied by some other process" when starting Ranger Admin
SupportKB Problem Description: When starting Ranger admin, it fails to start up with the following e ...
- [转]微信小程序实现图片上传功能
本文转自:http://blog.csdn.net/feter1992/article/details/77877659 前端: 微信开发者工具 后端:.Net 服务器:阿里云 这里介绍微信小程序如何 ...
- IdentityServer4 知多少
1. 引言 现在的应用开发层出不穷,基于浏览器的网页应用,基于微信的公众号.小程序,基于IOS.Android的App,基于Windows系统的桌面应用和UWP应用等等,这么多种类的应用,就给应用的开 ...
- [WP]BugkuCtf - pwn2
1.首先运行一下该程序 2.我们权限不够于是去修改一下权限(改前,改后) 3.改后我们重新运行一下(123是输入的语句) 4.拖进IDA,查看字符串,此处应该就是得到flag的地方 5.之后我们查看m ...
- 【重学计算机】计组D1章:计算机系统概论
1.冯诺依曼计算机组成 主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线) 2.计算机层次结构 应用程序-高级语言-汇编语言-操作系统-指令集架构层-微代码层 ...
- ASP.NET Core中使用GraphQL - 第七章 Mutation
ASP.NET Core中使用GraphQL - 目录 ASP.NET Core中使用GraphQL - 第一章 Hello World ASP.NET Core中使用GraphQL - 第二章 中间 ...
- Python3+unitest自动化测试初探(上篇)
目录 1.概念介绍 2.准备工作 3.一个简单的例子 4.test fixture 5.测试套 1.概念介绍 unit test:单元测试,可以简单粗暴地理解成用一段代码去测试另外一段代码.unitt ...