python中的异常处理

一、常见的异常

调试Python程序时,经常会报出一些异常,异常的原因一方面可能是写程序时由于疏忽或者考虑不全造成了错误,这时就需要根据异常Traceback到出错点,进行分析改正;另一方面,有些异常是不可避免的,但我们可以对异常进行捕获处理,防止程序终止。

异常含义
Exception所有异常的基类
AttributeError特征引用或者赋值失败时引发的
IOError输入/输出操作失败,试图打在不存在的文件(包括其他情况)
IndexError使用序列中不存在的索引
KeyError使用映射中不存在的键
NameError找不到名字(变量 )
SyntaxError在代码为错误形式时引发
ValueError正确的类型对象,但是对象使用不合适的值
UnboundLocalError访问未初始化的本地变量
TypeError传入对象类型与要求的不符合
AttributeError对象没有这个属性
IndentationError缩进错误
TabError Tab和空格混用
ValueError传入无效的参数
SystemError一般的解释器系统错误

二、异常处理机制

1.捕捉异常

try:
    print(name)
# python中几乎所有的异常都可以通过 Exception捕获,并进一步处理
except Exception as e:
    print("出现异常时执行的内容")
    print(e)            # 打印异常的原因
    name = 'westos'
    print(name)
else:
    print("没有出现异常时执行的内容")
finally:
    print("不管是否出现异常,总会执行的内容")

注意 except Exception as e 的写法,e 是一个变量,记录了异常的类,可以用 print 函数打印出来

2.捕获多个异常

try:
    需要执行的操作
except Exception as e:
    如果发生异常,执行以下代码
except Exception as f:
    如果发生异常,执行以下代码
else:
    如果没有发生异常,执行的命令
finally:
    无论如何,都要执行的代码

如果需要明确指定异常的类,而且是多个类的情况下,可以使用多个 except 语句。

try:
    需要执行的操作
except (异常类1,异常2,异常3) as e:
    如果发生异常,执行以下代码
else:
    如果没有发生异常,执行的命令
finally:
    无论如何,都要执行的代码

三、 抛出异常

异常处理就是掩盖错误,抛出异常是没事找事,找茬。

代码:

class AgeError(Exception):
    pass
age = int(input("Age:"))
if 0<age<=150:
    print(age)
else:
    # 抛出异常
    raise  AgeError("年龄不合法")

测试:
在这里插入图片描述

四、异常的种类

Exception 异常的父类,可以捕获多个子类
在requests模块中常见的异常:

在requests.exceptions方法下查看

requests.exceptions ConnectionError #未知的服务器
requests.exceptions ConnectTimeout #连接\读取超时
requests.exceptions ProxyError #代理连接不上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值