Python异常处理

简介: 本文介绍Python对于异常处理的语法支持。

常见语法错误

  • 拼写错误
  • 程序不符合Python语法规范
  • 缩进错误

异常处理

  • try...except...:捕获单个异常并处理
  • try...except...except...:捕获多个异常并处理
  • try...except...else...:捕获异常并处理,如果没异常,执行else块语句
  • try...except...finally...:捕获异常并处理,finally块一定被执行(除非被强行中断)

抛出异常

  • raise语句可以抛出异常:

    • raise 异常名
    • raise 异常名, 附加数据
    • raise 类名
  • assert语句:

    • assert<条件测试>, <异常附加数据>:断言为假会抛出AssertionError异常并包含错误信息。

内置异常类

异常名 描述
AttributeError 调用不存在的方法引发的异常
EOFError 遇到文件末尾引发的异常
ImportError 导入模块出错引发的异常
IndexError 列表越界引发的异常
IOError I/O操作引发的异常
KeyError 使用字典中不存在的键引发的异常
NameError 使用不存在的变量名引发的异常
TabError 语句块缩进不正确引发的异常
ValueError 搜索列表中不存在的值引发的异常
ZeroDivisionError 除数为0引发的异常
FileNotFoundError 找不到文件引发的异常

谈谈 except 的捕获方式

  • except:捕获所有异常
  • except<异常名>:捕获指定异常
  • except (异常名1, 异常名2):捕获异常1或者异常2
  • except<异常名> as <数据>:捕获指定异常及其附加的数据
  • except (异常名1, 异常名2):捕获指定异常1或者异常2及异常附加的数据

Java里面我们也有提及,能不要 catch All 就不要这样处理。就像这里的except语句,直接catch All,但往往是不合适的。

代码测试工作

函数

def grade(sum):
    """
    >>> grade(90)
    '优'
    >>> grade(89)
    '良'
    >>> grade(65)
    '及格'
    >>> grade(10)
    '不及格'
    """
    if sum > 100 or sum < 0:
        print('Error')
        return
    elif sum > 90:
        return '优'
    elif sum > 80:
        return '良'
    elif sum > 70:
        return '中'
    elif sum > 60:
        return '及格'
    else:
        return '不及格'


if __name__ == '__main__':
    import doctest
    doctest.testmod()    

单元测试函数

test1.py

def grade(sum):
    if sum > 100 or sum < 0:
        print('Error')
        return
    elif sum > 90:
        return '优'
    elif sum > 80:
        return '良'
    elif sum > 70:
        return '中'
    elif sum > 60:
        return '及格'
    else:
        return '不及格'


if __name__ == '__main__':
    import doctest
    doctest.testmod()    

文本文件 test.txt 中保存测试用例:

>>>from test1 import grade
>>> grade(90)
'优'
>>> grade(89)
'良'
>>> grade(65)
'及格'
>>> grade(10)
'不及格'

测试语句:

import doctest
doctest.testfile('test.txt')  
相关文章
|
1月前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
|
1月前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
|
3月前
|
数据库连接 Python
Python中的异常处理除了Try语句,你还会啥?
Python中的异常处理除了Try语句,你还会啥?
65 1
|
3月前
|
Python
|
2月前
|
Python
Python编程中的异常处理:理解与实践
【9月更文挑战第14天】在编码的世界里,错误是不可避免的。它们就像路上的绊脚石,让我们的程序跌跌撞撞。但是,如果我们能够预见并优雅地处理这些错误,我们的程序就能像芭蕾舞者一样,即使在跌倒的边缘,也能轻盈地起舞。本文将带你深入了解Python中的异常处理机制,让你的代码在面对意外时,依然能保持优雅和从容。
157 73
|
1月前
|
安全 Java 程序员
Python 异常处理!
本文详细介绍了Python中的异常处理,包括try、except和finally语句的使用方法。文章区分了语法错误与异常,并列举了Python中常见的异常类型,如`SyntaxError`、`TypeError`等。通过具体示例展示了如何使用try-except块捕获和处理异常,以及如何结合else和finally子句增强代码的健壮性和可读性。此外,还介绍了如何使用raise语句主动抛出异常。通过合理的异常处理,可以提高程序的可靠性与调试效率,但也可能带来性能开销和代码复杂度的增加。
40 4
|
1月前
|
IDE 开发工具 开发者
Python中的异常处理与调试技巧
【9月更文挑战第32天】在软件开发中,错误和异常是难以避免的。了解如何有效处理这些情况对于编写健壮、可靠的代码至关重要。本文将深入探讨Python中的异常处理机制,介绍如何使用try-except语句捕捉异常,以及如何利用Python的调试工具来诊断问题。通过实际示例,我们将展示如何优雅地处理异常并提高代码质量。
|
2月前
|
对象存储 索引 Python
30天拿下Python之异常处理
30天拿下Python之异常处理
31 3
|
1月前
|
安全 数据库连接 开发者
深度解析Python上下文管理器:优雅资源管理与异常处理
深度解析Python上下文管理器:优雅资源管理与异常处理
21 0
|
3月前
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 讨厌的异常处理
本文详细讨论了Python中的异常处理机制,包括异常捕获、异常抛出、自定义异常、环境清理,以及使用上下文管理器确保资源正确释放,最后还提到了Python的标准异常类。
37 1
下一篇
无影云桌面