Python3 错误和异常一篇就够了

简介: 1.错误和异常Python 的语法错误或者称之为解析错,是初学者经常碰到的语法分析器会指出错的一行,并且在最先找到的错误的位置标记一个小小的箭头。即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。大多数的异常都不会被程序处理,都以错误信息的形式展现




1.错误和异常


Python 的语法错误或者称之为解析错,是初学者经常碰到的

语法分析器会指出错的一行,并且在最先找到的错误的位置标记一个小小的箭头。

即便 Python 程序的语法是正确的,在运行它的时候,也有可能发生错误。运行期检测到的错误被称为异常。

大多数的异常都不会被程序处理,都以错误信息的形式展现


2.异常处理


try/except


异常捕捉可以使用 try/except 语句。



以下例子中,让用户输入一个合法的整数,但是允许用户中断这个程序(使用 Control-C 或者操作系统提供的方法)。用户中断的信息会引发一个KeyboardInterrupt 异常。


while True:
    try:
        x = int(input("请输入一个数字:"))
        break
    except ValueError:
        print("您输出的不是数字!")
        # 请输入一个数字:ee
        # 您输出的不是数字!
        # 请输入一个数字:12 


一个 try 语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行


try/except…else


try/except 语句还有一个可选的 else 子句,如果使用这个子句,那么必须放在所有的 except 子句之后。

else 子句将在 try 子句没有发生任何异常的时候执行。



try-finally


try-finally 语句无论是否发生异常都将执行最后的代码。



以下实例中 finally 语句无论异常是否发生都会执行:


while True:
    try:
        x = int(input("请输入一个数字:"))
        break
    except ValueError:
        print("您输出的不是数字!")
        # 请输入一个数字:ee
        # 您输出的不是数字!
        # 请输入一个数字:12
    finally:
        print("我无论如何都会被执行!")
        # 请输入一个数字:12
        # 我无论如何都会被执行!


3.抛出异常


Python 使用 raise 语句抛出一个指定的异常。

raise语法格式如下:


raise [Exception [, args [, traceback]]]



以下实例如果 x 大于 5 就触发异常:


x = 10
if x > 5:
    raise Exception('{}大于5了!'.format(x))
    # Exception: 10大于5了!


4.assert(断言)


Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。


断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如我们的代码只能在 Linux 系统下运行,可以先判断当前系统是否符合条件。



语法格式如下:


assert expression


等价于:


if not expression:
    raise AssertionError


assert 后面也可以紧跟参数:


assert expression [, arguments]


等价于:


if not expression:
    raise AssertionError(arguments)


以下实例判断当前系统是否为 Linux,如果不满足条件则直接触发异常,不必执行接下来的代码:


import sys
assert ('linux' in sys.platform), "该代码只能在Linux上执行"


5.with


读者可能觉得,即要打开文件又要关闭文件,还要关注异常处理,有点烦琐,所以Python提供了一个with语句,利用这个语句抽象出文件操作中频繁使用的try/except/finally相关的细节


with open('index.txt', 'r') as f:
    read_data = f.read()
    print(read_data)
print(f.closed)  # True



目录
相关文章
|
2月前
|
Unix API Python
【Python】已完美解决:(Python3.8异常)AttributeError: module ‘time‘ has no attribute ‘clock‘
【Python】已完美解决:(Python3.8异常)AttributeError: module ‘time‘ has no attribute ‘clock‘
50 0
|
3月前
|
Python
Python基础教程(第3版)中文版 第8章 异常(笔记)
Python基础教程(第3版)中文版 第8章 异常(笔记)
|
4月前
|
索引 Python
Python中的异常处理与自定义异常
Python中的异常处理与自定义异常
43 0
|
2月前
|
数据采集 存储 Java
如何让Python爬虫在遇到异常时继续运行
构建健壮Python爬虫涉及异常处理、代理IP和多线程。通过try/except捕获异常,保证程序在遇到问题时能继续运行。使用代理IP(如亿牛云)防止被目标网站封锁,多线程提升抓取效率。示例代码展示了如何配置代理,设置User-Agent,以及使用SQLite存储数据。通过`fetch_url`函数和`ThreadPoolExecutor`实现抓取与重试机制。
如何让Python爬虫在遇到异常时继续运行
|
24天前
|
API C++ Python
【Azure 应用服务】Python fastapi Function在Azure中遇见AttributeError异常(AttributeError: 'AsgiMiddleware' object has no attribute 'handle_async')
【Azure 应用服务】Python fastapi Function在Azure中遇见AttributeError异常(AttributeError: 'AsgiMiddleware' object has no attribute 'handle_async')
|
25天前
|
存储 Python
Python 中的用户定义异常
【8月更文挑战第23天】
19 0
|
2月前
|
机器学习/深度学习 运维 监控
使用Python实现深度学习模型:智能安防监控与异常检测
【7月更文挑战第26天】 使用Python实现深度学习模型:智能安防监控与异常检测
49 6
|
29天前
|
前端开发 JavaScript Java
Python错误、异常和模块
本文详细介绍了Python编程中的错误和异常处理以及模块的使用方法。语法错误如遗漏引号会导致`SyntaxError`,而运行时错误如除以零则会产生`ZeroDivisionError`等异常。文章通过实例展示了如何使用`try...except`结构来捕获并处理异常,确保程序的健壮性。此外,还介绍了如何自定义异常以及主动抛出异常的方法。在模块方面,文章解释了如何创建和导入模块以重用代码,并展示了不同导入方式的特点,包括导入单个函数、全部内容等。最后提到了Python标准库的使用和查询模块内容的方法。
|
2月前
|
机器学习/深度学习 数据采集 算法
Python实现Prophet时间序列数据建模与异常值检测(Prophet算法)项目实战
Python实现Prophet时间序列数据建模与异常值检测(Prophet算法)项目实战
120 2