赞
踩
异常的处理:
>>>>>>>异常的捕获<<<<<
语法
Try:
尝试执行代码
可能出现异常的代码
Except:
出现错误的处理
如果try部分出现了异常,expcept部分一定会执行
Except()部分主要用来捕获异常,并处理异常
一次捕获多个异常的语法:
Try:
可能出现异常的代码
Except(异常的类型1,异常的类型2,异常的类型3):
捕获任意类型异常 格式:except Exception:
获取异常的错误信息,给异常类型起别名
Except 异常类型名 as 别名
(别名中记录异常的信息)
try:
lt= [10,20]print(lt[5])exceptNameError as ret:print("已经捕获到变量未定义异常了,对异常进行处理,ret:",ret)exceptValueError as exp:print("已经捕获到值错误异常,对异常进行处理,exp:",exp)exceptException as exp:print("捕获到任意类型异常了,对异常进行处理---exp:",exp)print("程序结束了")
访问异常信息:
Args:该属性返回异常的错误编号和描述字符串
Errno:该属性返回异常的错误编号
Strerror:该属性返回异常的描述字符串
With_traceback():通过该方法可处理异常的传播轨迹信息
deffoo():try:
fis= open("a.txt");exceptException as e:print(e.args )print(e.errno)print(e.strerror)
foo()
使用raise引发异常:
要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称。关键字raise是用来抛出异常的,一旦抛出异常后,后续的代码将无法运行。
raise 语句的基本语法格式为
raise [exceptionName [(reason)]]
其中,用 [] 括起来的为可选参数,其作用是指定抛出的异常名称,以及异常信息的相关描述。如果可选参数全部省略,则 raise 会把当前错误原样抛出;如果仅省略 (reason),则在抛出异常时,将不附带任何的异常描述信息。
raise 语句有如下三种常用的用法:
1,raise:单独一个raise,该语句引发当前上下文中捕获的异常(比如在except块中),或默认引发RuntimeError异常。
try:
a= input("输入一个数:")if(nota.isdigit()):raise
exceptRuntimeError as e:print("引发异常:",repr(e))
2.raise异常类:raise后带一个异常类。该语句引发指定异常类的默认实例。
try:
a= input("输入一个数:")#判断用户输入的是否为数字
if(nota.isdigit()):raise ValueError("a 必须是数字")exceptValueError as e:print("引发异常:",repr(e))
3.Raise异常对象:引发指定的异常对象。
try:
a= input("输入一个数:")if(nota.isdigit()):raise ValueError("a 必须是数字")exceptValueError as e:print("引发异常:",repr(e))raise
Python 的异常传播轨迹:
Traceback模块:
Traceback.print_exc():将异常传播轨迹信息输出到控制台或指定文件中
Format_exc():将异常传播轨迹信息转换成字符串
Print_exception(etype,value,tb[,limit[,file]])
Etype:指定异常类型
Value:指定异常值
Tb:指定异常的traceback信息。
实现异常的完整语法:
#实现异常的完整语法
try:#可能会出现异常的代码
except异常类型1:#针对该异常类型的处理代码
except异常类型2:#针对该异常类型的处理代码
except异常类型3:#针对该异常类型的处理代码
exceptException as exp:#exp中获取异常的错误信息#except部分只有在发生异常时才会执行
else:#else部分在没有发生异常时才会执行
finally:#finally部分无论有没有异常都会执行
自定义抛出异常:
#定义 input——password 函数 提示用户输入密码
definput_password():
pwd= input("请输入密码:")#如果用户输入长度<8,抛出异常
if len(pwd)<8:print("抛出异常")#使用exception类创建对象
ex = Exception("错误:密码长度小于8位")#使用raise 跑出异常对象
raiseex#如果用户输入长度 >=8 返回输入密码
else:returnpwdtry:
ret=input_password()print(ret)exceptException as exp:print("捕获任意类型异常,exp:",exp)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。