猪行天下之Python基础——6.1 异常与断言(上)

简介: 内容简述:1、异常2、断言

1、异常


了解异常前,首先是区分「语法错误」与「运行时异常」,语法错误是连编译器都过不了的错误,比如if语句后面漏掉了冒号(:),程序跑都跑不起来;运行错误则是程序跑起来后,因为程序的业务逻辑问题引起的程序崩溃,比如除以0。


① Python中的常见异常


Exception类 因为是 所有异常类的父类,又称 万能异常,可以捕获任何异常!Python中常见的异常如下表所示:


异常 描述信息
AssertionError 断言语句失败
AttributeError 尝试访问未知的对象属性
IndexError 索引超出序列的范围
keyError 字典中查找一个不存在的Key
NameError 尝试访问一个不存在的变量
OSError 操作系统产生的异常,比如FileNotFoundError
SyntaxError Python语法错误
TypeError 不同类型间的无效操作
ZeroDivisionError 除数为0
IOError 输入输出错误
ValueError 函数传参类型错误


② 异常捕获


Python中为我们提供了两组语句用于异常捕获,try-expect-elsetry-finally。下面讲解下六种常见的玩法:


「1. try捕获了任何异常,直接丢给except后的代码块处理」,代码示例如下:


try:
    result = 1 / 0
except:
    print("捕获到异常了!")


运行结果如下


捕获到异常了!


「2. 捕获特定类型」,代码示例如下:


try:
    result = 1 / 0
except ZeroDivisionError:
    print("捕获到除数为零的错误") 


运行结果如下


捕获到除数为零的错误


「3. 针对不同的异常设置多个except」,代码示例如下


运行结果如下


try:
    sum = 1 + '2'
    result = 1 / 0
except TypeError as reason:
    print("类型出错:" + str(reason))
except ZeroDivisionError as reason:
    print("除数为0:" + str(reason))


运行结果如下


类型出错:unsupported operand type(s) for +: 'int' and 'str'


「4. 对多个异常统一处理」,代码示例如下:


try:
    result = 1 / 0
    sum = 1 + '2'
except (TypeError, ZeroDivisionError) as reason:
    print(str(reason)) 


运行结果如下


division by zero


「5. 当没有检测到异常时才执行的代码块,可以用else」,代码示例如下:


try:
    result = 4 / 2
except ZeroDivisionError as reason:
    print(str(reason))
else:
    print("没有发生异常,输出结果:%d" % result)


运行结果如下


没有发生异常,输出结果:2


6. 无论是否发生异常都会执行的一段代码块」,代码示例如下:


try:
    result = 4 / 2
except ZeroDivisionError as reason:
    print(str(reason))
else:
    print("没有发生异常,输出结果:%d" % result)
finally:
    print("无论是否发生异常都会执行~")


运行结果如下


没有发生异常,输出结果:2
无论是否发生异常都会执行。


目录
打赏
0
0
0
0
7
分享
相关文章
[oeasy]python065python报错怎么办_try_试着来_except_发现异常
本文介绍了Python中处理异常的基本方法,重点讲解了`try`和`except`的用法。通过一个计算苹果重量的小程序示例,展示了如何捕获用户输入错误并进行处理。主要内容包括: 1. **回顾上次内容**:简要回顾了Shell环境、Python3游乐场和Vim编辑器的使用。 2. **编写程序**:编写了一个简单的程序来计算苹果的总重量,但发现由于输入类型问题导致结果错误。 3. **调试与修正**:通过调试发现输入函数返回的是字符串类型,需要将其转换为整数类型才能正确计算。
54 32
[oeasy]python066_如何捕获多个异常_try_否则_else_exception
本文介绍了Python中`try...except...else`结构的使用方法。主要内容包括: 1. **回顾上次内容**:简要复习了`try`和`except`的基本用法,强调了异常处理的重要性。 2. **详细解释**: - `try`块用于尝试执行代码,一旦发现错误会立即终止并跳转到`except`块。 - `except`块用于捕获特定类型的异常,并进行相应的处理。 - `else`块在没有异常时执行,是可选的。 3. **示例代码**:通过具体例子展示了如何捕获不同类型的异常(如`ValueError`和`ZeroDivisionError`),并解释了异常处理
50 24
对于Python中的异常要如何处理,raise关键字你真的了解吗?一篇文章带你从头了解
`raise`关键字在Python中用于显式引发异常,允许开发者在检测到错误条件时中断程序流程,并通过异常处理机制(如try-except块)接管控制。`raise`后可跟异常类型、异常对象及错误信息,适用于验证输入、处理错误、自定义异常、重新引发异常及测试等场景。例如,`raise ValueError("Invalid input")`用于验证输入数据,若不符合预期则引发异常,确保数据准确并提供清晰错误信息。此外,通过自定义异常类,可以针对特定错误情况提供更具体的信息,增强代码的健壮性和可维护性。
|
4月前
|
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
在Python中,`try...except`语句用于捕获和处理程序运行时的异常
101 5
|
4月前
|
在Python中,自定义函数可以抛出自定义异常
在Python中,自定义函数可以抛出自定义异常
89 5
自定义Python的异常
自定义Python的异常
42 5
|
5月前
|
Python生成器、装饰器、异常(2)
【10月更文挑战第16天】
70 1
Python生成器、装饰器、异常(2)
|
8月前
|
【Python】已完美解决:(Python3.8异常)AttributeError: module ‘time‘ has no attribute ‘clock‘
【Python】已完美解决:(Python3.8异常)AttributeError: module ‘time‘ has no attribute ‘clock‘
145 0
|
5月前
|
Python生成器、装饰器、异常
【10月更文挑战第15天】
40 2
Python学习八:面向对象编程(下):异常、私有等
这篇文章详细介绍了Python面向对象编程中的私有属性、私有方法、异常处理及动态添加属性和方法等关键概念。
50 1

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等