其他例外类型
ValueError | 当函数接收到正确型别但不适当的值时抛出。 | int("abc") | ValueError: invalid literal for int() with base 10 |
TypeError | 当操作或函数应用于不支援的资料型别时抛出。 | 1 + "a" | TypeError: unsupported operand type(s) for + |
IndexError | 当试图存取串列中不存在的索引时抛出。 | [1, 2, 3][3] | IndexError: list index out of range |
KeyError | 当试图存取字典中不存在的键时抛出。 | {"a": 1}["b"] | KeyError: \'b\' |
AttributeError | 当属性引用或方法应用于不支援的对象时抛出。 | "hello".non_existent_method() | AttributeError: \'str\' object has no attribute |
NameError | 当引用尚未定义的变数或函数时抛出。 | print(unknown_var) | NameError: name \'unknown_var\' is not defined |
ZeroDivisionError | 当试图将数字除以零时抛出。 | 1 / 0 | ZeroDivisionError: division by zero |
FileNotFoundError | 当尝试打开不存在的档案时抛出。 | open("nonexistent.txt") | FileNotFoundError: No such file or directory |
IOError | 通用的输入/输出错误。 | open("nonexistent.txt") | IOError: No such file or directory |
ImportError | 当导入模组失败或找不到模组时抛出。 | import nonexistent_module | ImportError: No module named \'nonexistent_module\' |
RuntimeError | 通用的一般错误。 | raise RuntimeError("general error") | RuntimeError: general error |
StopIteration | 用迭代器时,当无更多项目可迭代时抛出。 | next(iter([])) | StopIteration |
IndentationError | 当程式码缩排格式不正确时抛出。 | def func():\\nprint("hi") (无缩排) | IndentationError: expected an indented block |
SyntaxError | 当程式码语法错误无法执行时抛出。 | print("hello (无闭合引号) | SyntaxError: EOL while scanning string literal |
RuntimeError
RuntimeError 是 Python 中的一种内置异常类型。它表示在程式执行期间发生的一般错误或异常情况。具体来说:
为何要使用例外处理?
- 提高程式稳定性: 防止程式因未预期的错误而崩溃。
- 提供友善的错误讯息: 让使用者更容易理解错误原因。
- 实现错误恢复: 在发生错误时,程式可以尝试进行修复或採取替代措施。
try except
try:
# 可能发生错误的程式码
except ExceptionType:
# 处理特定类型的例外
try: 包含可能产生例外的程式码。except: 如果 try 区块中的程式码发生了指定的 ExceptionType 类型的例外,则执行 except 区块中的程式码。
example:
try:
# 可能发生错误的程式码
except ExceptionType:
# 处理特定类型的例外
更多用法
多个 except 区块: 可以使用多个 except 区块来处理不同的例外类型。else 区块: 如果 try 区块中的程式码没有发生任何例外,则执行 else 区块中的程式码。finally 区块: 不论是否发生例外,finally 区块中的程式码都会执行,通常用于清理资源。
更多用法
多个 except 区块: 可以使用多个 except 区块来处理不同的例外类型。
else 区块: 如果 try 区块中的程式码没有发生任何例外,则执行 else 区块中的程式码。
finally 区块: 不论是否发生例外,finally 区块中的程式码都会执行,通常用于清理资源。