Python异常处理语句try,except实例详解

点击打开在线编译器,边学边练

        上一节我们已经了解了异常情况的发生,这一节我们来学习一下异常处理语句,先举个例子,假定甲乙丙丁4辆车分别能承载1吨、2吨、3吨、4吨的货物,当公司接来了任务(货物不可拆分),会首先去考虑甲车能否承载,如果不能承载就交由乙车去装运,如果不能就继续选择车辆,如果最后都没办法处理该货物,那么就终止该程序,我们可以把这个货物看作异常来理解。

        处理异常的语句有多种形式,分别为try...except语句、多except代码块、try...except...else语句和try...except...finally语句、try...excpept...else语句。

    1. try...except语句

        这种形式为我们常用的形式,它的语法格式为:

try:
    block
Except [typeerror ]:
    deal

        block为我们的程序执行过程中可能会抛出异常的语句,typeerror为错误类型,如果省略就不指定类型,即捕获全部异常,deal为具体的处理语句。

        我们通过例子来了解一下这个语句,代码如下:

def test():
  number = int(input('请输入一个数字:'))
  if 15 / number >= 3:
    print('ok')
  else:
    print('wrong')
try:
  test()
except:
  print('分母为0的异常情况')

        我们通过几个输入情况来测试结果:

请输入一个数字: 5
ok
请输入一个数字:2
ok
请输入一个数字:dotcpp
分母为0的异常情况
请输入一个数字:0
分母为0的异常情况

         我们可以发现我们在except语句中没有指定类型,所以它捕获了所有异常并执行相关语句,因此我们输入了dotcpp也触发了这种异常,因此我们需要对代码进行修改,我们需要把except语句更改为:except ZeroDivisionError,然后我们再次执行,输出结果为:

请输入一个数字:dotcpp
Traceback (most recent call last):
  File "C:/Users/轻烟/PycharmProjects/untitled1/teach/test.py", line 8, in <module>
    test()
  File "C:/Users/轻烟/PycharmProjects/untitled1/teach/test.py", line 2, in test
    number = int(input('请输入一个数字:'))
ValueError: invalid literal for int() with base 10: 'dotcpp'

        输入0的时候:

请输入一个数字:0
分母为0的异常情况

        通过这两种方式我们来总结一下,如果我们在except语句中不指定类型,那么无论test()中出现任何错误都会执行except语句,如果我们指定了类型的时候,只有指定类型的错误发生的时候才会触发这种异常机制。

    2. except代码块

        except代码块就是对于try...except语句的一种扩展,对于一个问题可能会出现多种错误的情况,那么我们可以对每一种情况都做一定的处理,语法格式如下:

Try:
    Test()
except [异常类型1]:
    deal
except [异常类型2]:
    deal
except [异常类型3]:
    deal

    代码如下:

def test():
  number = int(input('请输入一个数字:'))
  if 15 / number >= 3:
    print('ok')
  else:
    print('wrong')
try:
  test()
except ZeroDivisionError:
  print('分母为0的异常')
except ValueError:
  print('传入的值异常')

        对于这种多except语句的处理机制,我们输入0和dotcpp的时候输出结果为:

请输入一个数字:dotcpp
传入的值异常
请输入一个数字:0
分母为0的异常

    3. 总结

        本节里我们主要学习了基础的ty...except语句的用法,异常类型的选择决定了我们是否所有异常执行except中的语句,所以一定要注意异常类型的选择,下一节我们来学习try...except语句的嵌套和try...except...else语句。

 



本文固定URL:https://www.dotcpp.com/course/275

第一章 人生苦短,我用Python
第二章 Python基础语法
第三章 Python入门语法
第四章 Python核心语法
第五章 函数
第六章 面向对象编程
第七章 模块
第八章 异常处理和程序调试
第九章 文件及目录操作
第十章 GUI编程
第十一章 进程和线程
第十二章 数据库管理
第十三章 算法
第十四章 爬虫
第十五章 实战篇
第十六章 后记
Dotcpp在线编译      (登录可减少运行等待时间)