Python笔记:错误和异常和访问错误消息

本文介绍了Python中的异常处理机制,包括如何处理特定类型的异常,如除以零错误,并演示了如何使用try-except语句来捕获这些异常。此外,还展示了如何通过异常对象访问具体的错误信息。

错误和异常

  • 当 Python 无法解析代码时,就会发生语法错误,因为我们没有遵守正确的 Python 语法。
  • 当在程序执行期间出现意外情况时,就会发生异常,即使代码在语法上正确无误。Python 有不同类型的内置异常。

指定异常

  • 可以指定要在 except 块中处理哪个错误,如下所示:

      try:
        # some code
      except ValueError:
        # some code
    
  • 现在它会捕获 ValueError 异常,但是不会捕获其他异常。如果我们希望该处理程序处理多种异常,我们可以在 except 后面添加异常元组。

      try:
          # some code
      except (ValueError, KeyboardInterrupt):
          # some code
    
  • 或者,如果我们希望根据异常执行不同的代码块,可以添加多个 except 块。

      try:
          # some code
      except ValueError:
          # some code
      except KeyboardInterrupt:
          # some code
    
  • 处理除以零的案例:

      def create_groups(items, num_groups):
          try:
              size = len(items) // num_groups
          except ZeroDivisionError:
              print("WARNING: Returning empty list. Please use a nonzero number.")
              return []
          else:
              groups = []
              for i in range(0, len(items), size):
                  groups.append(items[i:i + size])
              return groups
          finally:
              print("{} groups returned.".format(num_groups))
    
      print("Creating 6 groups...")
      for group in create_groups(range(32), 6):
          print(list(group))
    
      print("\nCreating 0 groups...")
      for group in create_groups(range(32), 0):
          print(list(group))
    

    正确的输出应该是:

      Creating 6 groups...
      6 groups returned.
      [0, 1, 2, 3, 4]
      [5, 6, 7, 8, 9]
      [10, 11, 12, 13, 14]
      [15, 16, 17, 18, 19]
      [20, 21, 22, 23, 24]
      [25, 26, 27, 28, 29]
      [30, 31]
    
      Creating 0 groups...
      WARNING: Returning empty list. Please use a nonzero number.
      0 groups returned.
    

访问错误消息

  • 在处理异常时,依然可以如下所示地访问其错误消息:

      try:
          # some code
      except ZeroDivisionError as e:
        # some code
        print("ZeroDivisionError occurred: {}".format(e))
    

    应该会输出如下所示的结果:

      ZeroDivisionError occurred: division by zero
    
  • 如果没有要处理的具体错误,依然可以如下所示地访问消息:

      try:
          # some code
      except Exception as e:
        # some code
        print("Exception occurred: {}".format(e))
    

    此处:Exception 是所有内置异常的基础类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值