在python中什么是异常?在程序中为什么抛异常?抛异常的几种方式

本文介绍了Python中的异常概念,指出异常是程序执行时的错误,会影响程序正常运行。抛异常用于中断当次执行的程序,防止整体程序终止。文章列举了四种抛异常的方式,并强调异常处理能增强程序的健壮性和问题数据记录。同时,讨论了爬虫过程中常见的requests库异常,如ConnectionError、ConnectTimeout和ProxyError。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.什么是异常?

2.在程序中为什么抛异常?

3.抛异常的几种方式

4.异常的好处

5.爬虫过程中经常出现的异常


1.什么是异常?

异常就是程序执行过程中发生的错误

异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。

一般情况下,在Python无法正常处理程序时就会发生一个异常。

异常是Python对象,表示一个错误。

当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

2.在程序中为什么抛异常?

抛异常是为了让当次执行的程序中断

如果不抛异常,整个程序就会全部终止

3.抛异常的几种方式

(1)使用·except而不带任何异常类型

try:
    正常的操作;
    ....
except:
    发生异常,执行这块代码
    .....
else:
    如果没有异常执行这块代码

(2)使用except而带多种异常类型

try:
    正常的操作
    ....
except(Exception1[, Exception2[,...ExceptionN]]]):
    发生以上异常中的一个,执行这块代码
    .....
else:
    如果没有异常执行这块代码

(3)try-finally

无论是否发生异常都会执行最后的代码

try:
    语句
finally:
    语句   # 退出try时总会执行
raise

(4)用户自定义异常   raise

try:
    raise NetworkError('Bad hostname')
except NetworkError as e:
    print(e)

4.异常的好处

(1)保证程序的健壮性     代码经得起各种情况的摧残

(2)对于有问题的数据进行收集,做好留痕工作

import requests
from requests.exceptions import ConnectionError
url_list=[
    'http://www.langlang2017.com',
    'http://xxx.com/0000000.html',
    'http://www.baidu.com'
]
for url in url_list:
    try:
        response=requests.get(url)
        print('------------:',url)
    except ConnectionError:
        with open('except_list.txt','a',encoding='utf=8') as fp:
            fp.write(url)

5.爬虫过程中经常出现的异常

requests中存在的异常在:requests.exceptions

(1)requests.exceptions.ConnectionError   未知服务器

(2)requests.exceptions.ConnectTimeout  连接\读取超时

(3)requests.exceptions.ProxyError  代理服务器异常   代理连接不上

import requests
from requests.exceptions import ConnectionError
url_list=[
    'htttp://www.langlang2017.com',
    'http://www.xxx.com/000000000.html',
    'http://www.baidu.com',
]
for url in url_list:
    try:
        response=requests.get(url)
        print('--------:',url)
    except ConnectionError as e:
        print(url,'有问题')
        print('ConnectionError:\n',e)
    except Exception as e:
        print(e)

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值