异常
异常(Exception),程序在运行过程中发生由于外部问题(如硬件错误、输入错误)等导致的程序异常事件。
在Python等面向对象的编程语言中,异常本身是一个对象,产生异常就是产生了一个异常对象。
抛异常的好处
在编程中抛出异常,可以使得程序能够继续执行,而不是中途停止,能够保持程序的健壮性。二是,抛出异常可以帮助我们做好留痕工作,对有问题的数据进行收集处理。
编程中应用
Python
一般捕获异常方式
在python中,我们一般使用以下格式来进行异常的捕获。
try:
'代码块'
except [异常类型]:
'代码块'
将可能发生异常的代码放在try下的代码块中。当try里面的代码发生异常时,如果符合except后的异常类型就直接转向执行except里的代码块;try里面的代码没有出现问题,就不执行except里的代码。
except后如果不写异常类型,则表示捕获所有异常类型。
try:
print(1/0)
except ZeroDivisionError as e:
print(e)
except [异常类型] [as 变量名(保存异常信息)],[]括号中的可写可不写。
try-else
没有发生异常时,在执行完try代码块后执行else的代码。有异常则不执行else里面的代码块。
try:
print('开始程序')
print(1/0)
except ZeroDivisionError as e:
print(e)
else:
print('else')
try-Finally
无论有没有异常,最后都执行finally后的语句。写在最后面
自定义异常raise
定义异常类:可以自定义一个错误类。例如
class Error(Exception):
def __init__(self, smg):
self.smg = smg
def __str__(self,):
return str(self.smg)
格式:raise+异常对象(‘异常描述’)
try:
raise Error('2333') #抛出异常
except Error as e:
print(e) #调用自定义异常类
>>>2333
异常种类:
Exception 异常的父类,可以捕获多个子类
在requests模块中常见的异常:
在requests.exceptions方法下查看
requests.exceptions ConnectionError #未知的服务器
requests.exceptions ConnectTimeout #连接\读取超时
requests.exceptions ProxyError #代理连接不上