python异常处理和程序调试:异常处理语句实例详解二

2022-07-3111:05:54编程语言入门到精通Comments756 views字数 1901阅读模式

  1. try...except语句的嵌套文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

这种语句就是多except语句的多处理方式,下面我们通过一个例题来学习一下try...except的语句嵌套。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def test():
  = int(input('有3个语句需要测试,请选择(1/2/3):'))
  if == 1:#keyError异常情况
    my_dict = {'dotcpp'123}
    print(my_dict['dot'])
  elif == 2:#IndexError异常
    my_list = [12345]
    print(my_list[100])
  elif == 3:#NameError异常
    print('不存在的变量dotcpp:', dotcpp)
try:
  try:
    try:
      test()
    except KeyError:
      print('KeyError异常')
  except IndexError:
    print('IndexError异常')
except NameError:
  print('NameError异常')

我们分别测试1/2/3,输出结果如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
3
4
5
6
3个语句需要测试,请选择(1/2/3):1
KeyError异常
3个语句需要测试,请选择(1/2/3):2
IndexError异常
3个语句需要测试,请选择(1/2/3):3
NameError异常

在这个例题中,我们首先在定义的函数中输入一个判断量n,然后根据n的值给出了三种异常的情况,然后我们在最后嵌套了3个try..except语句,也就是说test()语句的结果会经过三层判断。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

    2. try...except...finally语句文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

一个完整的异常处理机制是离不开finally语句的,这个语句的作用是不管我们的程序中是否有异常发生,finally语句下的代码都会被执行,它的语法格式为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
3
4
5
6
try:
    block
except [typeerror]:
    deal1
finally:
    deal2

我们通过一个例子来看一下这种结构:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
3
4
5
6
7
8
9
def test():
  = int(input('请输入一个整数:'))
  print(n)
try:
  test()
except KeyError:
  print('KeyError异常')
finally:
  print('finally语句已执行')

我们分别输入6和dotcpp来看一下输出结果:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
3
4
5
6
7
8
9
10
11
请输入一个整数:5
5
finally语句已执行
请输入一个整数:dotcpp
finally语句已执行
Traceback (most recent call last):
  File "C:/Users/test.py", line 5in <module>
    test()
  File "C:/Users/test.py", line 2in test
    = int(input('请输入一个整数:'))
ValueError: invalid literal for int() with base 10'dotcpp'

通过这个例子我们可以看出,无论我们的程序是否出现异常,finally语句都会执行。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

    3. try...except...else语句文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

我们在上面学习的finally语句是无论语句是否发生异常都会执行的语句,下面我们来学习的try...except...else语句当程序中未发生异常的时候才会执行,它的语法结构为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
3
4
5
6
try:
    block
except [typeerror ]:
    deal1
else:
    deal2

下面我们看例子:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
3
4
5
6
7
8
9
def test():
  = int(input('请输入一个整数:'))
  print('输入值为:',n)
try:
  test()
except ValueError:
  print('ValueError异常')
else:
  print('当前程序未出现异常')

输出结果为:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
3
请输入一个整数:5
输入值为: 5
当前程序未出现异常

当我们输入值为dotcpp时文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

1
2
请输入一个整数:dotcpp
ValueError异常

我们可以看出当程序异常的时候else语句并没执行,这些语句的区分难度并不大,大家可以通过例子去练习一下这几种常用的异常处理语句。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/26253.html

  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/26253.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定