python处理异常的机制_python异常处理机制

异常的处理:

>>>>>>>异常的捕获<<<<<

语法

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值