【Python基础知识】捕获多个异常

发布 : Python培训      来源:

2021-08-30 16:38:09

除了可以捕获到指定的异常和没有发生异常这两种情况外,还有第三种情况,就是在try和except之间的代码块中,发生了异常,但不是指定的异常:

  1. try:
  2. # 将输入x和y的代码放进try中,其余不变
  3. x = int(input('请输入被除数:'))
  4. y = int(input('请输入除数:'))
  5. result = x / y
  6. print('结果为{}'.format(result))
  7. except ZeroDivisionError:
  8. print('除数不能为零')
  9. print('=' * 30)

尝试输入被除数为一个不能转换为整数的字符串,如字母'c':

  1. 请输入被除数:c
  2. Traceback (most recent call last):
  3. File "example.py", line 2, in <module>
  4. x = int(input(&#39;请输入被除数:&#39;))
  5. ValueError: invalid literal for int() with base 10: &#39;c&#39;

Python解释器提示出错了,ValueError,而上述代码只能捕获ZeroDivisionError,这就是第三种情况,如果发生了异常,但不是指定的ZeroDivisionError,Python解释器仍然报错(除非在外层的try-except语句中处理了这个异常)。

如果想同时处理这两种异常,那么可以将这两种异常名称全部写在except语句后面,用逗号分隔开,并用括号括起来:

  1. try:
  2. x = int(input(&#39;请输入被除数:&#39;))
  3. y = int(input(&#39;请输入除数:&#39;))
  4. result = x / y
  5. print(&#39;结果为{}&#39;.format(result))
  6. except (ZeroDivisionError, ValueError):
  7. print(&#39;除数不能为零, 且被除数与除数必须为数字&#39;)
  8. print(&#39;=&#39; * 30)

运行修改后的程序,输入被除数为&#39;c&#39;:

  1. 请输入被除数:c
  2. 除数不能为零, 且被除数与除数必须为数字
  3. ==============================

由此可见,成功处理了ValueError。再次运行程序,试试它还能不能处理ZeroDivisionError:

  1. 请输入被除数:10
  2. 请输入除数:0
  3. 除数不能为零, 且被除数与除数必须为数字
  4. =============================

可以同时处理这两种异常,要处理更多的异常也是如此,只要在括号中添加待处理的异常即可。除此之外,还可以使用多个except关键字,分别处理这两种异常的情况,这样做的好处是可以根据不同的异常进行不同的处理:

  1. try:
  2. x = int(input(&#39;请输入被除数:&#39;))
  3. y = int(input(&#39;请输入除数:&#39;))
  4. result = x / y
  5. print(&#39;结果为{}&#39;.format(result))
  6. except ZeroDivisionError: # 处理ZeroDivisionError
  7. print(&#39;除数不能为零!&#39;)
  8. except ValueError: # 处理ValueError
  9. print(&#39;除数与被除数必须为数字!&#39;)
  10. print(&#39;=&#39; * 30)

测试是否能处理这两种异常,首先测试是否处理ValueError:

  1. 请输入被除数:s
  2. 除数与被除数必须为数字!
  3. ==============================

然后测试是否处理ZeroDivisionError:

  1. 请输入被除数:10
  2. 请输入除数:0
  3. 除数不能为零!
  4. ==============================

由此可见,使用两个except关键字能够分别处理这两种异常情况。

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部