Dotcpp  >  编程教程  >  Python异常处理和程序调试  >  Python异常处理语句try…except实例详解一

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

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

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