一、什么是异常

程序运行过程中错误发生的信号。(如果运行时产生的异常,程序不处理就会被抛出,随之会造成程序终止)

二、异常的种类

首先,异常主要分为语法错误逻辑错误两种类型

语法错误会在程序还没有执行前就会被检测出,所以针对语法错误,我们就要在程序执行前解决掉。

# 语法错误示范:
if def foo
pass class Bar:
pass

逻辑错误只有在程序执行过程中会被检测,不处理会就会被抛出,导致程序终止。

# 逻辑错误示范:
l=[11,22,33]
l[4]
xxx
d = {'a': 1, 'b': 2}
d['z']

我们常见的逻辑错误类型有哪些??

AttributeError   试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError 输入/输出异常;基本上是无法打开文件
ImportError 无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError 试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError 使用一个还未被赋予对象的变量
SyntaxError    常见的语法错误
TypeError 传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError 传入一个调用者不期望的值,即使值的类型是正确的

三、异常处理

既然有异常发生,那我们就要设法捕捉异常,不能因为异常而导致程序的终止。

如果我们能预知错误的发生条件时,那我们就应该用if判断去处理,在异常发生之前先进行预防。

num = input('请输入数字>>:').strip()

if num.isdigit():   # 我们知道只有在num为字符串形式的整数时,下列代码才不会出错,该条件是可预知的
num = int(num) num += 1
print(num)

如果我们无法预知错误发生的条件时,则需要用到try...except:在错误发生之后进行处理。

try:
print('===1')
l = [1, 2, 3]
l[11]
print('====3')
d = {'a': 1, 'b': 2}
d['z']
print('===5')
except IndexError:
print('没有执行"l[11]"下面的代码')
except KeyError:
print('KeyError') else:
print('放在最后执行,前提是try内的代码没有异常发生,才会执行else') finally:
print('finally放在最后执行,无论try内的代码有没有异常发生都会执行')
print('你好啊') # ===1
# 没有执行"l[11]"下面的代码
# finally放在最后执行,无论try内的代码有没有异常发生都会执行
# 你好啊

当我们不知道会发生的错误类型时,就需要用到万能异常捕获!!

try:
code1
code2
code3
code4 except Exception as e:
print(e)
class EgonException(BaseException):
def __init__(self,msg):
self.msg=msg def __str__(self):
return self.msg try:
raise EgonException('类型错误')
except EgonException as e:
print(e)

自定义异常类

主动产生异常:raise的用法

# raise 一般用于自定义程序的控制逻辑或系统资源被无限占用时
class People:
def __init__(self,name,age):
self.__name = name
self.__age =age def set_inter(self,name,age):
# 控制用户的修改格式
if not isinstance(name,str):
raise TypeError('name must be str')
if not isinstance(age,int):
raise TypeError('age must be int')
self.__name = name
self.__age = age obj = People('jack',12)
obj.set_inter('peter',25)
print(obj.__dict__) # {'_People__name': 'peter', '_People__age': 25}

python下的异常处理的更多相关文章

  1. python下异常处理

    1.python下异常如何处理: #encoding=utf-8 """ python遇到异常,程序直接运行 try: "判断有可能抛出异常的代码" ...

  2. Python 基础之 异常处理

    python 基础之异常处理 说到异常处理,就得先问一下,什么是异常处理?  先来看一下,什么是异常? 异常就是:程序运行时发出的错误的信号. 异常的种类先来看一下: 一.常见的异常 Attribut ...

  3. Python基础---python中的异常处理

    Python中的异常处理 一.什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) ...

  4. [Python Study Notes]异常处理

    正则表达式 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理 断言(Assertions) python标准异常 ...

  5. Python系列之 - 异常处理

    python提供的异常处理 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常 ...

  6. Python异常和异常处理

    Python异常和异常处理2017年12月20日 22:17:08 Megustas_JJC 阅读数:114 标签: python 异常处理 更多 个人分类: Python 版权声明:本文为博主原创文 ...

  7. python中的异常处理机制

    python中的异常处理 1.什么是异常 异常就是程序运行时发生错误的信号(在程序出现错误时,则会产生一个异常,若程序没有处理它,则会抛出该异常,程序的运行也随之终止),在python中,错误触发的异 ...

  8. Python 入门 之 异常处理

    Python 入门 之 异常处理 1.异常处理 (1)程序中的错误分为两种 <1> 语法错误 (这种错误,根本过不了Python解释器的语法检测,必须在程序执行前就改正) # 语法错误示范 ...

  9. python面向对象07/异常处理

    python面向对象07/异常处理 目录 python面向对象07/异常处理 1. 异常错误分类 2. 什么是异常? 3. 异常处理 4. 为什么要有异常处理 5. 异常处理的两种方式 1.if判断 ...

随机推荐

  1. Golang常见误区(二)

    35. 关闭 HTTP 的响应体 使用 HTTP 标准库发起请求.获取响应时,即使你不从响应中读取任何数据或响应为空,都需要手动关闭响应体.新手很容易忘记手动关闭,或者写在了错误的位置: // 请求失 ...

  2. Java canlendar task

    DayPilot for Java - Calendar, Scheduler and Gantt Chart Componentshttps://java.daypilot.org/ AJAX Sc ...

  3. DAY12、装饰器

    一.补充:nonlocal关键字 1.作用:将L与E(E中的名字需要提前定义)的名字统一 2.应用场景:如果想在被嵌套的函数中修改外部函数变量(名字)的值 3.案例: def outer():    ...

  4. Python——正则模块

    1.re模块是用来操作正则表达式 2.正则表达式——用来字符串匹配的 (1)字符组:[字符组]  例如[0123fdsa456*/-] [0-9] 等同于[0123456789] [a-z] 匹配小写 ...

  5. centos7.5误删python2.7之后,导致yum和Pythonm命令无法使用

    问题描述 最近想要将服务器上的Python2.7升级成3.x的版本时.使用了如下命令: (1)强制删除已安装python及其关联 # rpm -qa|grep python|xargs rpm -ev ...

  6. CentOS7使用firewalld防火墙配置端口

    安装启用firewalld防火墙 CentOS7默认的防火墙是firewalld 如果没有firewalld防火墙,可以执行yum install firewalld 命令进行安装 firewalld ...

  7. selenium家族发展史

    什么是Selenium? Selenium 是专门为Web应用程序编写的一个验收测试工具.Selenium测试直接运行在浏览器中,支持的浏览器包括IE(7.8.9).Mozilla Firefox.M ...

  8. linux使用mail发送外部smtp邮件

    linux使用mail发送外部smtp邮件 第一章 说明 参考资料: http://coolnull.com/2614.html linux自带的mail可以实现外部smtp发邮件.不需要本地配置po ...

  9. 强化学习Q-Learning算法详解

    python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...

  10. 分布式监控系统开发【day37】:服务端生成配置数据(四)

    一.目录结构 二.引子与代码 1.客户端获取服务列表接口 1.解决了什么问题 客户端要给我获取服务列表的的时候,他肯定要告诉他是谁?他怎么告诉我,客户端必须有一个id号 Saltsack你装一个客户端 ...