Python 3 介绍(十八)--错误和异常

目录

1. 异常类型

2. 使用 try...except 语句

示例:

3. 多个异常

示例:

4. 捕获所有异常

示例:

5. 使用 finally 子句

示例:

6. 使用 else 子句

示例:

7. 自定义异常

示例:

8. 抛出自定义异常

示例:

9. 使用 assert 语句

示例:

10. 使用上下文管理器处理资源

示例:

11. 使用 logging 模块记录异常

示例:

总结


 

在 Python 3 中,错误和异常处理是非常重要的编程实践,它可以帮助开发者优雅地处理程序中可能出现的各种问题。当程序遇到无法处理的情况时,会抛出一个异常。通过适当的错误处理机制,我们可以捕获这些异常,并采取合适的措施来应对,从而避免程序崩溃或产生意外的结果。

1. 异常类型

Python 中有许多预定义的异常类型,以下是一些常见的异常类型:

  • BaseException: 所有异常的基类。
  • Exception: 常规异常的基类。
  • ArithmeticError: 所有算术错误的基类。
    • FloatingPointError: 浮点运算错误。
    • OverflowError: 数值过大。
    • ZeroDivisionError: 除数为零。
  • AssertionError: 断言失败。
  • AttributeError: 对象没有此属性。
  • EOFError: 没有更多的输入。
  • ImportError: 导入模块失败。
  • IndexError: 序列索引超出范围。
  • KeyError: 字典中没有这个键。
  • KeyboardInterrupt: 用户中断程序(例如按 Ctrl+C)。
  • MemoryError: 内存不足。
  • NameError: 未知的名字。
  • NotImplementedError: 方法或功能尚未实现。
  • OSError: 操作系统错误。
    • FileNotFoundError: 尝试打开不存在的文件。
  • SyntaxError: Python 语法错误。
  • TypeError: 操作或函数应用于不适当类型的对象。
  • ValueError: 函数的参数有有效范围外的值。
  • IndentationError: 缩进错误。
    • TabError: Tab 和空格混合使用。

2. 使用 try...except 语句

try...except 语句可以用来捕获并处理异常。

示例:

 

python

深色版本

1try:
2    result = 10 / 0
3except ZeroDivisionError:
4    print("除数不能为零")

3. 多个异常

可以捕获多个异常类型,并分别处理。

示例:

 

python

深色版本

1try:
2    result = 10 / 0
3except ZeroDivisionError:
4    print("除数不能为零")
5except ValueError:
6    print("无效的值")

4. 捕获所有异常

可以使用 Exception 类型来捕获所有异常。

示例:

 

python

深色版本

1try:
2    result = int("abc")
3except Exception as e:
4    print(f"发生了一个错误: {e}")

5. 使用 finally 子句

finally 子句无论是否发生异常都会被执行,通常用于释放资源。

示例:

 

python

深色版本

1try:
2    f = open("example.txt", "r")
3    data = f.read()
4    print(data)
5except Exception as e:
6    print(f"发生了一个错误: {e}")
7finally:
8    f.close()
9    print("文件已关闭")

6. 使用 else 子句

如果 try 块中的代码没有抛出任何异常,则执行 else 块中的代码。

示例:

 

python

深色版本

1try:
2    result = 10 / 2
3except ZeroDivisionError:
4    print("除数不能为零")
5else:
6    print(f"结果是 {result}")

7. 自定义异常

可以定义自己的异常类来处理特定的错误情况。

示例:

 

python

深色版本

1class MyCustomError(Exception):
2    pass
3
4def check_value(value):
5    if value < 0:
6        raise MyCustomError("值不能为负数")
7
8try:
9    check_value(-5)
10except MyCustomError as e:
11    print(e)

8. 抛出自定义异常

可以显式地抛出自定义异常。

示例:

 

python

深色版本

1raise MyCustomError("这是一个自定义异常")

9. 使用 assert 语句

assert 语句用于断言某个条件是真的,如果条件为假,则抛出 AssertionError

示例:

 

python

深色版本

1assert 10 > 5, "10 应该大于 5"

10. 使用上下文管理器处理资源

使用 with 语句可以自动管理资源,如文件的打开和关闭。

示例:

 

python

深色版本

1with open("example.txt", "r") as f:
2    data = f.read()
3    print(data)

11. 使用 logging 模块记录异常

可以使用 logging 模块来记录异常信息。

示例:

 

python

深色版本

1import logging
2
3logging.basicConfig(level=logging.ERROR)
4
5try:
6    result = 10 / 0
7except ZeroDivisionError as e:
8    logging.error(f"发生了一个错误: {e}")

总结

错误和异常处理是编程中非常重要的一个方面,特别是在编写健壮的应用程序时。通过使用 try...except 结构,可以有效地捕获并处理异常,从而防止程序因错误而崩溃。此外,通过自定义异常类,可以更好地描述特定的错误情况,并使代码更具可读性和可维护性。无论是处理常见的异常类型还是记录异常信息,掌握异常处理的基本方法都是非常重要的。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值