常见异常类型及处理方式
RuntimeError
- 产生场景:当线程相关的操作在不适当的环境下进行时,可能会引发此异常。例如,尝试启动一个已经启动过的线程。
- 处理示例:
import threading
def target_function():
pass
t = threading.Thread(target = target_function)
t.start()
try:
t.start()
except RuntimeError as e:
print(f"捕获到RuntimeError: {e}")
ThreadError
- 产生场景:
ThreadError
是线程模块中所有异常的基类,当线程操作出现错误时可能引发它(虽然直接引发的情况较少,更多是引发其子类异常)。例如,使用非法参数创建线程。
- 处理示例:
import threading
try:
t = threading.Thread(target = None, args = (1, 2))
except threading.ThreadError as e:
print(f"捕获到ThreadError: {e}")
AttributeError
- 产生场景:当在多线程环境中访问对象不存在的属性时可能引发。例如,在创建线程对象后,误将
start
方法写成了starts
。
- 处理示例:
import threading
def target_function():
pass
t = threading.Thread(target = target_function)
try:
t.starts()
except AttributeError as e:
print(f"捕获到AttributeError: {e}")