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')  
相关文章
|
21天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
2月前
|
程序员 开发者 Python
Python错误与异常处理详解
Python提供强大的错误和异常处理机制,包括语法错误(编译时)和运行时错误。异常处理通过try-except语句实现,优雅地处理运行时错误。例如,尝试除以零会引发`ZeroDivisionError`,可通过except捕获并处理。可以使用多个except处理不同类型的异常,或者用`Exception`捕获所有异常。此外,用raise语句可手动抛出异常,增强代码健壮性。理解并运用这些机制能提升Python编程水平。
|
2月前
|
Python
解释 Python 中的异常处理机制。
解释 Python 中的异常处理机制。
22 0
|
3月前
|
开发者 Python
Python中的异常处理:原理与实践
Python中的异常处理:原理与实践
|
2月前
|
Python
python中文件和异常处理方法(二)
python中文件和异常处理方法(二)
13 0
|
2月前
|
Python
python中文件和异常处理方法(一)
python中文件和异常处理方法(一)
29 0
|
2月前
|
Python
python中文件和异常处理方法(三)
python中文件和异常处理方法(三)
20 0
|
2月前
|
Python
Python异常处理
Python异常处理
13 0
|
14天前
|
程序员 数据库连接 索引
《Python 简易速速上手小册》第5章:Python 常见错误和异常处理(2024 最新版)
《Python 简易速速上手小册》第5章:Python 常见错误和异常处理(2024 最新版)
35 1
|
15天前
|
UED Python
掌握Python异常处理:面试中的关键考点
【4月更文挑战第14天】本文探讨了Python异常处理在面试中的重要性,涵盖核心概念、常见问题和易错点。异常处理涉及异常、捕获、异常链、自定义异常、finally子句和raise语句。面试中应注意避免过于宽泛的异常捕获、忽视异常链、在finally中误用return、自定义异常设计不实用以及异常处理与业务逻辑混杂等问题。通过理解并解决这些问题,可提升代码健壮性和面试表现。
29 0