异常处理

异常和错误

程序中错误分类

1.语法错误(程序执行前改正)

2.逻辑错误

什么是异常?

异常就是程序运行时发生错误的信号

python中常见的异常种类

在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误。

AttributeError # 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x

IOError # 输入/输出异常;基本上是无法打开文件

ImportError # 无法引入模块或包;基本上是路径问题或名称错误

IndentationError # 语法错误(的子类) ;代码没有正确对齐

IndexError # 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]

KeyError # 试图访问字典里不存在的键

KeyboardInterrupt # Ctrl+C被按下

NameError # 使用一个还未被赋予对象的变量

SyntaxError # Python代码非法,代码不能编译(个人认为这是语法错误,写错了)

TypeError # 传入对象类型与要求的不符合

UnboundLocalError # 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,

导致你以为正在访问它

ValueError # 传入一个调用者不期望的值,即使值的类型是正确的

ArithmeticError

AssertionError

AttributeError

BaseException

BufferError

BytesWarning

DeprecationWarning

EnvironmentError

EOFError

Exception

FloatingPointError

FutureWarning

GeneratorExit

ImportError

ImportWarning

IndentationError

IndexError

IOError

KeyboardInterrupt

KeyError

LookupError

MemoryError

NameError

NotImplementedError

OSError

OverflowError

PendingDeprecationWarning

ReferenceError

RuntimeError

RuntimeWarning

StandardError

StopIteration

SyntaxError

SyntaxWarning

SystemError

SystemExit

TabError

TypeError

UnboundLocalError

UnicodeDecodeError

UnicodeEncodeError

UnicodeError

UnicodeTranslateError

UnicodeWarning

UserWarning

ValueError

Warning

ZeroDivisionError

异常处理

什么是异常?

异常发生之后,异常之后的代码就不执行了

什么是异常处理?

python解释器检测到错误,触发异常(也允许程序员自己触发异常)

程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关)

如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这就是异常处理

为什么要进行异常处理?

增强你程序的鲁棒性与容错性

如何进行异常处理?

这里指的异常由程序的错误引起的,语法上的错误跟异常处理无关,必须在程序运行前就修正

异常处理的两种方式:

1.if判断式

2.python专有异常处理

if判断式

总结:

1.if判断式的异常处理只能针对某一段代码,对于不同的代码段的相同类型的错误你需要写重复的if来进行处理。

2.在你的程序中频繁的写与程序本身无关,与异常处理有关的if,会使得你的代码可读性极其的差

3.if是可以解决异常的,只是存在1,2的问题,所以,千万不要妄下定论if不能用来异常处理。

python专有异常处理

python:为每一种异常定制了一个类型,然后提供了一种特定的语法结构用来进行异常处理

1.基本语法:

# 异常捕获基本格式:

try:

被检测的代码块

except 异常类型:

try中一旦检测到异常,就执行这个位置的逻辑

f = open('1.txt')

g = (line.strip() for line in f)

try:

for i in g:

print(i)

except StopIteration:

f.close()

2.异常类只能用于处理指定的异常情况

s1 = 'hello'

try:

int(s1)

except IndexError as e:

print(e)

# 未捕获到异常,程序直接报错

3.处理多分支

s1 = 'hello'

try:

int(s1)

except IndexError as e:

print(e)

except KeyError as e:

print(e)

except ValueError as e:

print(e)

4.万能异常:Exception

利用万能异常定制不同逻辑:

def func():

print(111)

def func1():

print(222)

dic = {1:func,2:func1}

while True:

try:

user = int(input('请输入数字:'))

dic[user]()

break

except ValueError:

print("请输入数字")

except KeyError:

print("不在索引之内")

except Exception:

print("意外错误")

5.异常的其他机构

try else finally

try:

dic = {'name':"alex"}

print(dic['age'])

l1 = [1,2,3]

print(l1[100])

except KeyError:

print("没有此键")

except IndexError:

print("没有此下标")

else:

print("如果没有出现异常则执行这里")

finally:

print('finally 666')

总结:

​1.except 必须依赖于try, else必须依赖于except和try

​2.finally只是依赖于try.

​3.finally : 在异常出现之前,执行finally语句(异常捕获不算错误)

​4.finally 用在 关闭数据库连接,文件句柄关闭,数据保存等,用到finally.

def func():

try:

print(111)

return 666

finally:

print(222)

print(func())

6.主动触发异常

class A:

def func(self):

raise Exception("使用父类方法")

class B(A):

def func(self):

print("in B func")

class C(A):

def func(self):

print("in C func")

class D(A):

def func1(self):

print("in D func1")

def function(obj):

obj.func()

obj1 = D()

function(obj1)

# 结果:

Exception: 使用父类方法

try:

raise TypeError('类型错误')

except Exception as e:

print(e)

7.自定义异常

class EvaException(BaseException):

def __init__(self,msg):

self.msg = msg

def __str__(self):

return self.msg

try:

raise EvaException("类型错误")

except EvaException as e:

print(e)

8.断言

断言: 展现出一种强硬的态度,若条件不成立,立马报错,结束下面的执行语句

# assert 条件

assert 1 == 1

assert 1 == 2

9.try..except的方式比较if的方式的好处

​1.改善代码容错性

​2.增强程序鲁棒性

10.万能异常与多分支的比较

什么时候用万能? 什么时候用多分支?

​如果你对错误信息不关心,只是想要排除错误让程序继续运行. 用万能异常.

​你对错误信息要进行明确的分流,让你的程序多元化开发.

python异常如何处理_python异常处理相关推荐

  1. python异常数据处理_Python 异常处理和捕获信息教程

    在学习了Python的基础数据类型和它们的相关操作方法之后,要学习的另外一个重点知识是 Python异常. 我们经常在编写程序和调试代码的过程中,有发生一些错误,为了处理和提醒用户这些错误,Pytho ...

  2. python异常包_python异常处理与导入模块与导入包

    一.什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Py ...

  3. python如何处理异常退出_python异常处理

    一.错误和异常 1.错误 代码运行前的语法或者逻辑错误 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) def test: ^ SyntaxError: inva ...

  4. python异常数据处理_Python爬虫提高之异常处理

    Python爬虫框架之异常处理 任何访问服务器获取数据的请求,都需要做异常处理,当然爬虫更需要我们对各种异常进行处理.只有这样才能提高爬虫的健壮性.如果我们的爬虫足够健壮,那么就能确保程序几个月不停止 ...

  5. python异常捕获_Python 异常的捕获、异常的传递与主动抛出异常操作示例

    本文实例讲述了Python 异常的捕获.异常的传递与主动抛出异常操作.分享给大家供大家参考,具体如下: 异常的捕获 demo.py(异常的捕获): try: # 提示用户输入一个整数 num = in ...

  6. python 异常分类_python的异常处理

    1. 异常 2. 异常种类 3. 异常处理 1. 异常 异常就是程序运行中发生的错误信号,如程序产生问题,而没有处理它,程序运行就将停止,py中错误触发的异常如下 2.异常种类 一般异常 Attrib ...

  7. python sql语句异常捕获_python异常处理

    一.什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Py ...

  8. python 异常回溯_Python 代码的异常处理和打印异常信息

    前言 1.Python的异常处理可以向用户准确反馈出错信息,所有异常都是基类Exception的子类.自定义异常都是从基类Exception中继承.Python自动将所有内建的异常放到内建命名空间中, ...

  9. python异常数据处理_python中如何处理异常值

    打开pycharm开发工具,在运行窗口输入命令:import pandas as pd #导入pandas库 输入数据集.data=pd.DataFrame({'name':['A','B','C', ...

最新文章

  1. Win7 一键获得管理所有权限(最高权限)注册表
  2. 牛逼!Python函数和文件操作(长文系列第3篇)
  3. Java实现消息发送
  4. 一只紧握笔的手:地震中的感人图片之二
  5. 他是绝世天才,却只开了半辈子的挂!死后惨遭封号200年,这就是和牛顿抬杠的下场.........
  6. java的多重循环实现杨辉三角_java使用for循环输出杨辉三角
  7. O-RAN: Towards an Open and Smart RAN
  8. MY-SQL常用命令
  9. ASP.NET MVC 3 Validation - 正则表达式验证RegularExpressionAttribute之日期验证
  10. symbol lookup error: undefined symbol:PySlice_Unpack
  11. U大师U盘启动盘制作工具(V1.1.0版)——升级U盘
  12. ecshop源码教程
  13. 【SUSE Linux kernel版本升级】SUSE Linux Enterprise Server 12 SP5
  14. 关于偏度和峰度的解释(易错)
  15. vue 给圆遮盖物添加文字 高德地图_【高德地图开发4】---增加覆盖物setMapTextZIndex...
  16. mysqldatareader什么意思_MySqlDataReader
  17. Linux 基本使用和 web 程序部署
  18. php 分别降低图片尺寸与质量的方法
  19. idea连接数据库Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezon‘
  20. LaTeX中手动修改参考文献格式

热门文章

  1. Android判断是否使用MediaCodec硬解码(十二)
  2. Linux 常用解压缩命令
  3. python3.7中Gluonts与Mxnet安装问题
  4. tensorflow之truncated_normal
  5. ubuntu-桌面菜单栏、任务栏、标题栏都不见了-解决办法
  6. 写任意正整数的次幂_并发扣款一致性,幂等性问题,这个话题还没聊完
  7. python 框架和 spring mvc_整合WebSphere Portal 7和Spring 3.0 Portlet MVC(下)
  8. Win10安装MySQL5.7(图文详解)
  9. 你说话的方式,决定了你的命运!
  10. 人越是没钱,越要戒掉这4点毛病,否则穷苦一辈子!