1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python异常如何处理_python异常处理

python异常如何处理_python异常处理

时间:2024-03-15 18:57:08

相关推荐

python异常如何处理_python异常处理

异常处理

异常和错误

程序中错误分类

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.万能异常与多分支的比较

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。