一、什么是异常

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

二、异常的种类

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

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

# 语法错误示范:
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. SpringCloud入门(一)

    一.微服务概述 1.什么是微服务 目前的微服务并没有一个统一的标准,一般是以业务来划分将传统的一站式应用,拆分成一个个的服务,彻底去耦合,一个微服务就是单功能业务,只做一件事. 与微服务相对的叫巨石 ...

  2. linux的挂载含义

    Linux下,mount挂载的作用,就是将一个设备(通常是存储设备)挂接到一个已存在的目录上.访问这个目录就是访问该存储设备.linux操作系统将所有的设备都看作文件,它将整个计算机的资源都整合成一个 ...

  3. Shell命令-文件及目录操作之pwd、rm

    文件及目录操作 - pwd.rm 1.pwd:显示当前所在位置信息 pwd命令的功能说明 pwd命令用于显示当前工作目录的绝对路径,以便在各个目录间来回切换. pwd命令的语法格式 pwd [OPTI ...

  4. Redis的发布与订阅

    业务: 运用数据与信息指导小药工的采购生产与销售行为 需求背景: (1)药工汇小程序用户(即小型中药初加工用户)需要知道自己加工的品种的价格涨跌信息和品种相关资讯) 需求分析拆解: (1)使用爬虫程序 ...

  5. vue2.0实现过滤

    vue1.0和vue2.0差别还是挺多的,之前的vue1.0还有过滤器功能,到了2.0过滤器只能通过自己编写.以下是写的一个小demo: HTML <div id="app" ...

  6. rt-thread 之网络组件

    @2019-02-23 [小记] 文件 <net_sockets.c> 为兼容标准 BSD Socket API 文件 <sal_socket.c> 为网络中间抽象层 文件 & ...

  7. iView页面Modal中内嵌Tabs,重新显示Modal时默认选中Tabs的第一项

    文档中说激活面板的name用value,页面第一次加载的时候可以,放在modal里就不好使了,每次打开的时候总显示上一次离开时的界面. 真正能用的是 this.$refs.tabs.activeKey ...

  8. Cucumber使用中问题

    1.cucumber自动化执行提示chrome使用不支持的命令标记 --ignore-certificate-errors 大概问题是chrome版本和chrmedriver版本不对应 2." ...

  9. Python操作文件-20181121

    Python操作文件 Python操作文件和其他语言一样,操作的过程无非是先定位找到文件.打开文件,然后对文件进行操作,操作完成后关闭文件即可. 文件操作方式:对文件进行操作,主要就是读.写的方式,p ...

  10. uImage

    linux内核经过编译后会生成一个ELF格式的可执行程序,叫vmlinux或vmlinuz,是原始的未经任何处理加工的原版内核ELF文件:嵌入式系统烧录的一般不是这个vmlinuz/vmlinux,而 ...