异常对象 | Python从入门到精通:高阶篇之四十二

简介: 本节主要是介绍如何捕获异常对象,except直接捕获所有的异常,或者是except 异常类型 as 异常名,捕获具体的异常类型。

异常传播 | Python从入门到精通:高阶篇之四十一

异常对象

我们如何去捕获到异常呢?
我们来通过代码分析一下:

print('异常出现前')

print(10/0)

print('异常出现后')

执行结果:

image.png

我们之前是如何处理这些异常的呢?

print('异常出现前')

try:
    print(10/0)
except:
    print('处理异常的代码~~~')

print('异常出现后')

执行结果:

image.png

在捕获异常对象之前,我们还需要知道一点。
如果except后不跟任何的内容,则此时它会捕获到所有的异常。
如果在except后跟着一个异常的类型,那么此时它只会捕获该类型的异常。

print('异常出现前')

try:
    # print(c)
    print(10/0)
except NameError:
    print(''出现 NameError 异常'')

print('异常出现后')

执行结果:

image.png
image.png

此时可以发现,注释掉print(c)之后,程序会出错,只能解决NameError的异常。如果要想解决print(10/0)的异常,可以再添加一个ZeroDivisionError的异常:

except ZeroDivisionError:
    print('出现 ZeroDivisionError 异常')

执行结果:

image.png

此时发现两个异常都解决了,但是如果现在添加了一个l = []

l = []

try:
    l[10]

执行结果:

image.png

此时没有捕获异常,我们来添加一下:

except IndexError:
    print('出现 IndexError 异常')

except:
    print('未知异常')

执行结果:

image.png

我们再添加一个异常代码:

1 + 'hello'

执行结果:

image.png

except:except Exception:效果一样,所以可以省略不写。
Exception 是所有异常类的父类,所以如果except后跟的是Exception,他也会捕获到所有的异常,可以在异常类后边跟着一个 as xx 此时xx就是异常对象。

except Exception as e :
    print('未知异常',e)

执行结果:

image.png

我们来看一下e的类型:

    print('未知异常',e,type(e))

执行结果:

image.png

在异常处理过程中,除了以上的语句之外,还可以添加finally。我们在后面添加finally语句。

print('异常出现前')
l = []
try:
    print(10/2)
except NameError:
    print('出现 NameError 异常')
except ZeroDivisionError:
    print('出现 ZeroDivisionError 异常')
except IndexError:
    print('出现 IndexError 异常')
except Exception as e :
    print('未知异常',e,type(e))
finally :
    print('无论是否出现异常,该子句都会执行')

print('异常出现后')

执行结果:

image.png

修改:

    print(10/0)

执行结果:

image.png

此时处理异常的语句可改为:

 try语句
        try:
            代码块(可能出现错误的语句)
        except 异常类型 as 异常名:
            代码块(出现错误以后的处理方式)
        except 异常类型 as 异常名:
            代码块(出现错误以后的处理方式)
        except 异常类型 as 异常名:
            代码块(出现错误以后的处理方式)
        else:
            代码块(没出错时要执行的语句) 
         finally:
            代码块(该代码块总会执行)  
 
         try是必须的 else语句有没有都行
        except和finally至少有一个    

配套视频课程,点击这里查看

获取更多资源请订阅Python学习站

相关文章
|
18天前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
65 4
|
2月前
|
安全 JavaScript Java
Python中None与NoneType的真相:从单例对象到类型系统的深度解析
本文通过10个真实场景,深入解析Python中表示“空值”的None与NoneType。从单例模式、函数返回值,到类型注解、性能优化,全面揭示None在语言设计与实际编程中的核心作用,帮助开发者正确高效地处理“无值”状态,写出更健壮、清晰的Python代码。
176 3
|
2月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
78 0
|
5月前
|
人工智能 C# Python
处理python异常
本文介绍了Python中的异常处理机制,并实现了一个简单的异常装饰器。通过`try/except`语句捕获异常,结合`finally`子句完成清理工作。为进一步优化代码结构,文章提出了使用装饰器处理异常的方法,避免函数中大量冗长的异常处理语句。通过类封装异常装饰器,多个函数可共享异常处理逻辑,提升代码简洁性和可维护性。总结强调了装饰器在异常处理中的优势,使代码更加优雅高效。
127 27
|
6月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
281 15
|
6月前
|
Python
如何处理python的常见异常问题
在Python语言中,python异常处理机制主要依赖try、except、else、finally和raise五个关键字。本篇文章将为大家详细讲解一下如何处理python的常见异常问题。
|
6月前
|
安全 测试技术 开发者
Python中的“空”:对象的判断与比较
在Python开发中,判断对象是否为“空”是常见操作,但其中暗藏诸多细节与误区。本文系统梳理了Python中“空”的判定逻辑,涵盖None类型、空容器、零值及自定义对象的“假值”状态,并对比不同判定方法的适用场景与性能。通过解析常见误区(如混用`==`和`is`、误判合法值等)及进阶技巧(类型安全检查、自定义对象逻辑、抽象基类兼容性等),帮助开发者准确区分各类“空”值,避免逻辑错误,同时优化代码性能与健壮性。掌握这些内容,能让开发者更深刻理解Python的对象模型与业务语义交集,从而选择最适合的判定策略。
202 5
|
人工智能 Java Python
python入门(二)安装第三方包
python入门(二)安装第三方包
168 1
|
Java Python 开发者
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
线程池详解与异步任务编排使用案例-xian-cheng-chi-xiang-jie-yu-yi-bu-ren-wu-bian-pai-shi-yong-an-li
564 3
Python 学习之路 01基础入门---【Python安装,Python程序基本组成】
|
12月前
|
机器学习/深度学习 Python
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda
本篇将详细介绍如何在Mac系统上安装和配置Anaconda,如何创建虚拟环境,并学习如何使用 `pip` 和 `conda` 管理Python包,直到成功运行第一个Python程序。通过本篇,您将学会如何高效地使用Anaconda创建和管理虚拟环境,并使用Python开发。
369 4
【10月更文挑战第5天】「Mac上学Python 6」入门篇6 - 安装与使用Anaconda

热门文章

最新文章

推荐镜像

更多