Python学习笔记--异常

1--异常概念

。--程序在运行是,如果Python解释器遇到一个错误,会停止程序的执行,并且提示一些错误信息,这就是异常
。--程序停止执行并且提示错误信息这个动作,我们称之为:抛出(raise)异常

。--程序开发是,很难将所有的特殊情况都处理的面面俱到,通过一异常捕获可以针对突发事件做集中的处理,从而保证程序的稳定性和健壮性



2--捕获异常

。--简单的捕获异常语法

--在程序开发中,如果对某些代码的执行不能确定是否正确,可以增加try(尝试)来捕获异常
--捕获异常最简单的语法格式:

try:
尝试执行的代码
except:
出现错误的处理

--try尝试,下方编写要尝试代码,不确定是否能够正常执行的代码
--except 如果不是,下方编写尝试失败后执行的代码

例:
try:
num=int(input("请输入一个整数:"))
except:
print("请输入一个整数")

。--错误类型捕获

--在程序执行时,可能会遇到不同类型的异常,并且需要针对不同类型的异常,做出不同的相应,这时,就需要捕获错误类型了
--语法:

try:
#尝试执行的代码
pass
except 错误类型1:
#针对错误类型1,对应的代码处理
pass
except(错误类型2,错误类型3):
#针对错误类型2和3,对应的代码处理
pass
except Exception as result:
print("未知错误:%s" %result)

--当Python解释器抛出异常时,最后一行错误信息的第一个单词,就是错误类型


。--捕获未知错误

--在开发时,要预判到所有可能出现的错误,还是有一定难度的
--如果希望程序无论出现任何错误,都不会因为Python解释器抛出异常而被终止,可以再增加一个except
--语法:

except Exception as result:
print("未知错误:%s" %result)


。--异常捕获完整语法

--实际开发中,为了能够处理复杂的异常情况
--语法:

try:
#尝试执行的代码
pass
except 错误类型1:
#针对错误类型1,对应的代码处理
pass
except(错误类型2,错误类型3):
#针对错误类型2和3,对应的代码处理
pass
except Exception as result:
#打印错误信息
print("未知错误:%s" %result)
else:
#没有出现异常才会执行的代码
pass
finally:
#无论是否有异常,都会执行的代码
print("无论是否有异常,都会执行的代码")

--else 只有在没有异常时才会执行的代码
--finally 无论是否有异常,都会执行的代码

3--异常的传递

。--异常的传递--当函数/方法执行出现异常,会将异常传递给函数/方法的调用一方
。--如果传递到主程序,仍然没有异常处理,程序才会被终止

提示:
--在开发中,可以在主函数中增加异常捕获
--而在主函数中调用的其他函数,只要出现异常,都会传递到主函数异常捕获中
--这样就不需要在代码中,增加大量的异常捕获,能够保证代码的整洁
例:

def demo1():
return int(print("请输入一个整数:"))
def demo2():
return demo1()

try:
print(demo2)
except ValueError:
print("请输入正确的整数")
except Exception as result:
print("未知错误:%s"%result)

4--抛出raise异常

。--在开发中,除了代码执行出错Python解释器会抛出异常之外
。--还可以根据应用程序特有的业务需求主动抛出异常

示例:
-提示用户输入密码,如果长度少于8,抛出异常
-用户登录模块、输入密码函数

**注意:当前函数只负责提示用户输入函数,如果密码长度不正确,需要其他的函数进行额外处理
因此可以抛出异常,有其他取药处理的函数捕获异常

。--抛出异常使用语法

--Python中提供了一个Exception异常类
--在开发市,如果满足特定业务需求时,希望抛出异常,可以:

-创建一个Exception的对象
-使用raise关键字抛出异常

例:

def input_password():

#提示用户输入密码
pwd=input("请输入密码:")

#判断密码长度>=8,返回用户输入的密码
if len(pwd)>=8:
return pwd

#如果<8 主动抛出异常
print("主动抛出异常")

#创建异常对象
ex=Exception("密码长度不够") #Exception(*args)
#主动抛出异常
raise ex

try:
print(input_password())
except Exception as result:
print(result)


阅读更多
想对作者说点什么? 我来说一句

Python学习笔记

2010年02月23日 596KB 下载

python学习笔记

2018年04月24日 906KB 下载

python 学习笔记资料

2018年01月23日 1.67MB 下载

pyhthon学习笔记

2017年10月30日 41KB 下载

Python 学习笔记

2016年05月22日 1.49MB 下载

python资料大全

2009年01月13日 12.55MB 下载

Python核心编程笔记

2015年02月25日 692KB 下载

Python培训资料.zip

2010年08月03日 2.03MB 下载

Python 资料大全

2010年08月02日 12.36MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭