python处理特定异常的范例代码

打印 上一主题 下一主题

主题 838|帖子 838|积分 2514

在下面的示例中,我们将编写代码来演示和处理MemoryError、RecursionError、StopIteration和TimeoutError。这些示例将展示如安在代码中触发这些异常,并提供一种处理方法以保持步调的稳健性。
示例代码

  1. import sys
  2. import time
  3. # 递归深度设置为一个较小的数字以便演示 RecursionError
  4. sys.setrecursionlimit(10)
  5. def allocate_memory():
  6.     try:
  7.         # 尝试分配大量内存
  8.         data = ' ' * (10 ** 10)
  9.     except MemoryError:
  10.         print("Caught a MemoryError: Not enough memory available.")
  11. def recursive_function(count):
  12.     try:
  13.         if count > 0:
  14.             recursive_function(count + 1)
  15.     except RecursionError:
  16.         print("Caught a RecursionError: Maximum recursion depth exceeded.")
  17. def iterate_with_stopiteration():
  18.     try:
  19.         it = iter([1, 2, 3])
  20.         while True:
  21.             print(next(it))
  22.     except StopIteration:
  23.         print("Caught a StopIteration: No more items to iterate.")
  24. def function_with_timeout():
  25.     try:
  26.         # 设置超时限制
  27.         timeout = time.time() + 5  # 5 seconds from now
  28.         while True:
  29.             if time.time() > timeout:
  30.                 raise TimeoutError("Function exceeded the allowed time limit.")
  31.             time.sleep(0.5)  # Delay to simulate long running task
  32.     except TimeoutError as e:
  33.         print(f"Caught a TimeoutError: {e}")
  34. if __name__ == "__main__":
  35.     allocate_memory()
  36.     recursive_function(1)
  37.     iterate_with_stopiteration()
  38.     function_with_timeout()
复制代码
异常处明白释:


  • MemoryError

    • 实验分配大量内存,可能会超过体系可用内存,从而触发MemoryError。
    • 异常被捕获并打印一条消息。

  • RecursionError

    • 通过一个递归函数,超出了Python默认的递归深度限制,触发RecursionError。
    • 异常被捕获并打印一条消息。

  • StopIteration

    • 使用next()函数迭代一个列表,当没有更多元素可迭代时,next()抛出StopIteration。
    • 异常被捕获并打印一条消息。

  • TimeoutError

    • 通过检查当前时间是否超过设定的超时时间来人为触发TimeoutError。
    • 异常被捕获并打印异常信息。

这些示例显示了如安在Python中处理一些特定的运行时异常,并确保步调在碰到错误时能够优雅地处理和响应。如许的异常处理对于编写健壮和用户友好的应用步调至关紧张。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表