异常对象 | 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学习站

相关文章
|
14天前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
24 2
|
28天前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
38 3
|
2月前
|
测试技术 开发者 Python
对于Python中的异常要如何处理,raise关键字你真的了解吗?一篇文章带你从头了解
`raise`关键字在Python中用于显式引发异常,允许开发者在检测到错误条件时中断程序流程,并通过异常处理机制(如try-except块)接管控制。`raise`后可跟异常类型、异常对象及错误信息,适用于验证输入、处理错误、自定义异常、重新引发异常及测试等场景。例如,`raise ValueError("Invalid input")`用于验证输入数据,若不符合预期则引发异常,确保数据准确并提供清晰错误信息。此外,通过自定义异常类,可以针对特定错误情况提供更具体的信息,增强代码的健壮性和可维护性。
|
2月前
|
Python
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
57 5
|
2月前
|
Python
在Python中,自定义函数可以抛出自定义异常
在Python中,自定义函数可以抛出自定义异常
49 5
|
2月前
|
存储 开发者 Python
自定义Python的异常
自定义Python的异常
20 5
|
3月前
|
存储 索引 Python
|
27天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
26天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
14天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
102 80