一、什么是错误,什么是异常,它们两者区别

这里解释如下:个人觉得很通俗易懂

错误是指在执行代码过程中发生的事件,它中断或干扰代码的正常流程并创建异常对象。当错误中断流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响应的代码),以帮助程序恢复流程。换句话说,错误是一个事件,而异常是该事件创建的对象。

当使用短语“产生异常”时,表示存在问题的方法发生错误,并创建异常对象(包含该错误的信息及发生的时间和位置)来响应该错误。导致出现错误和随后异常的因素包括用户错误、资源失败和编程逻辑失败。这些错误与代码实现特定任务的方法有关,而与该任务的目的无关。

如果不进行异常处理,即不对错误做出响应,程序的健壮性就会大打折扣,甚至无法保证正常运行,所以必须要进行异常处理。
原文:http://blog.163.com/zhaojinyong2@126/blog/static/279729562008719384580/

Python的异常处理能力是很强大的,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。所有异常都是基类 Exception的成员。所有异常都从基类Exception继承,而且都在exceptions模块中定义。Python自动将所有异常名称放在内建 命名空间中,所以程序不必导入exceptions模块即可使用异常。一旦引发而且没有捕捉SystemExit异常,程序执行就会终止。如果交互式会话 遇到一个未被捕捉的SystemExit异常,会话就会终止。
Python采用的是”尝试(try)块“、和”捕获(catch)块“。

二、Python中的异常

1、NameError:尝试访问一个未声明的变量

>>>foo
Traceback (most recent call last):File "<pyshell#0>", line 1, in <module>foo
NameError: name 'foo' is not defined

如果请求的名字没有在任何名称空间里找到,则产生一个NameError异常。

2、ZeroDivisionError:除数为0

>>> 1/0Traceback (most recent call last):File "<pyshell#2>", line 1, in <module>1/0
ZeroDivisionError: integer division or modulo by zero

3、SyntaxError:Python解释器语法错误

>>> for
SyntaxError: invalid syntax
>>> 

SyntaxError异常是唯一一个不是在程序执行时发生的异常,代表一个不正常的结构,一般在编译时发生。

注意:Python是解释型非编译型,这里说的编译是字节编译。

4、IndexError:超出索引( out of range)

>>> lis = []
>>> lis[0]Traceback (most recent call last):File "<pyshell#5>", line 1, in <module>lis[0]
IndexError: list index out of range

5、KeyError:请求一个不存在的字典关键字

>>> dic = {'name':'BeginMan'}
>>> dic['name']
'BeginMan'
>>> dic['age']Traceback (most recent call last):File "<pyshell#8>", line 1, in <module>dic['age']
KeyError: 'age'
>>> 

6、IOError:输入输出错误

>>> f = open('s.txt','r')Traceback (most recent call last):File "<pyshell#12>", line 1, in <module>f = open('s.txt','r')
IOError: [Errno 2] No such file or directory: 's.txt'

7、AttributeError:尝试访问未知的属性

>>> class myClass(object):pass>>> myIn = myClass()
>>> myIn.barTraceback (most recent call last):File "<pyshell#17>", line 1, in <module>myIn.bar
AttributeError: 'myClass' object has no attribute 'bar'
>>> 

 8、ValueError:传给函数的参数类型不正确,比如给int()函数传入字符串形

三、异常处理

try-except/try-finally只選其一,可以一个try多个except;但只能一个try,一个finally
try-except-finally组合

try:s = 1/0
#except Exception,e:
except ZeroDivisionError, e:print 'Error:%s' %e
finally:print 'ok'

断言assert:

try:assert 1 == 2,'1 is not equal 2'
except Exception,e:print '%s:%s' %(e.__class__.__name__,e)
#输出:AssertionError:1 is not equal 2

注意:
如果上面的with代码块没有使用from __future__ import with_statement, 代码将会报错, 提示你这个功能在2.6中实现.
Warning: 'with' will become a reserved keyword in Python 2.6

强烈推荐:http://blog.csdn.net/sinchb/article/details/8392827#t1

from: http://www.cnblogs.com/BeginMan/p/3171445.html

Python入门笔记(17):错误、异常相关推荐

  1. python入门笔记之初步了解代码

    # # python入门笔记之初步了解代码 #### 昨日回顾 ##### 操作系统 对计算机:秘书,管家 对人类:提供一个人性化操作台 ##### 三层架构 ```mermaid graph TD ...

  2. Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期)

    Python学习笔记17:实操案例十四(模拟高铁售票系统,推算几天后的日期) 1.模拟高铁售票系统 使用漂亮的表格模块PrettyTable 这个模块需要预先安装,不然直接导入会报错: 安装办法: h ...

  3. Python 入门笔记6——列表

    Python 入门笔记6--列表 序列 列表 列表的创建 list()创建 range()创建整数列表 推导式生成列表 列表元素的增加 append()方法 +运算符操作 +=运算符操作 extend ...

  4. python入门笔记——内置函数作业

    python入门笔记--内置函数作业 # 求三组连续自然数的和:求出1到10,20到30,35到45的三个和 sum1 = sum(range(1,11)) sum2 = sum(range(20,3 ...

  5. python入门笔记——飞机大战(极简版、未进行继承优化)

    python入门笔记--飞机大战(极简版.未进行继承优化) import random import pygame# 引用pygame里的模块 from pygame.locals import *# ...

  6. python入门笔记——类和对象⑤(继承)

    python入门笔记--类和对象⑤(继承) # python中展现面向对象的三大特征:封装.继承.多态 # 封装:把内容封装到某个地方以便后续的使用 # 对封装来说,其实就是使用初始化构造方法将内容封 ...

  7. Python入门笔记,看完直接玩几个小案例是没有问题滴~

    这篇是纯干货分享,对python感兴趣的可以认真看起来! 小白想要入门Python爬虫,首先得了解爬虫的基本工作原理和相关的理论基础,爬虫简介部分就不细说了,都可以百度得到. 爬虫工作原理总结来讲就是 ...

  8. Python学习笔记:错误,测试,调试(起)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  9. python新手入门笔记_2020最新Python入门笔记

    Python变量和数据类型 数据类型 print语句 注释 Python的注释以 # 开头,后面的文字直到行尾都算注释 这里要注意注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远 ...

最新文章

  1. 为什么深度学习是非参数的?
  2. 介绍一个好用的抓取dump的工具-ProcDump
  3. windows server 2012 FTP 服务器 / 访问网络共享盘
  4. 北海市计算机等级考试,2021上半年北海市计算机二级报名时间|网上报名入口【已开通】...
  5. 在win8下安装使用java及在win8下部署java环境变量-图文
  6. node.js——麻将算法(四)胡牌算法的一些优化处理方案(无赖子版)
  7. c语言abc变def,C语言的permutation求解
  8. 研究生毕业之际一些闲聊
  9. java打印输出 怎么隔开_java日志分开打印
  10. 基于jquery打造的一款全页面图片分享特效
  11. 腾讯微博等7家网站实行实名制
  12. 软件授权注册码_授权码授予
  13. 代码审计系列:审计思路学习笔记
  14. 电脑无法连接到网络的解决方法(可能,不妨试一试)
  15. android studio无法识别mtk,Android6.0 MTK6737 长按 Power 没有真正关机 (MTK IPO 功能) · Younix’s Studio...
  16. 计算两个矩形的IOU交并比_Python
  17. 查看mysql删除日志_如何查看数据库删除记录日志
  18. ElasticSearch语法整理-DSL语言高级查询
  19. 计算机组成原理mips描述,计算机组成原理与接口技术:基于MIPS架构/华中科技大学教学改革建设教材...
  20. SBSE—基于搜索的软件工程简介

热门文章

  1. 【采用】【风险管理】(第一篇)风险管理核心指标
  2. ubuntu 18.04 安装nodejs
  3. TabLayout-Android M新控件
  4. 小班计算机游戏教案,幼儿园小班游戏教案
  5. canopy算法 java_mahout源码canopy算法分析之二CanopyMapper
  6. SpringBoot微信公众号授权访问认证文件部署
  7. Linux如何在任务栏显示时间,在MFC[转载]在MFC状态栏显示时间 状态栏显示时间
  8. git 撤销刚才的rebase_git rebase 的使用 (用于撤销某次commit)
  9. c++ websocket客户端_你要的websocket都在这,收好不谢~~~
  10. matlab 神经网络编程入门系列(1)