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

2023年 7月 12日 60.9k 0

  1. try...except语句的嵌套

这种语句就是多except语句的多处理方式,下面我们通过一个例题来学习一下try...except的语句嵌套。

1234567891011121314151617181920 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,输出结果如下:

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

在这个例题中,我们首先在定义的函数中输入一个判断量n,然后根据n的值给出了三种异常的情况,然后我们在最后嵌套了3个try..except语句,也就是说test()语句的结果会经过三层判断。

    2. try...except...finally语句

一个完整的异常处理机制是离不开finally语句的,这个语句的作用是不管我们的程序中是否有异常发生,finally语句下的代码都会被执行,它的语法格式为:

123456 try:    blockexcept [typeerror]:    deal1finally:    deal2

我们通过一个例子来看一下这种结构:

123456789 def test():  = int(input('请输入一个整数:'))  print(n)try:  test()except KeyError:  print('KeyError异常')finally:  print('finally语句已执行')

我们分别输入6和dotcpp来看一下输出结果:

1234567891011 请输入一个整数:55finally语句已执行请输入一个整数:dotcppfinally语句已执行Traceback (most recent call last):  File "C:/Users/test.py", line 5in     test()  File "C:/Users/test.py", line 2in test    = int(input('请输入一个整数:'))ValueError: invalid literal for int() with base 10'dotcpp'

通过这个例子我们可以看出,无论我们的程序是否出现异常,finally语句都会执行。

    3. try...except...else语句

我们在上面学习的finally语句是无论语句是否发生异常都会执行的语句,下面我们来学习的try...except...else语句当程序中未发生异常的时候才会执行,它的语法结构为:

123456 try:    blockexcept [typeerror ]:    deal1else:    deal2

下面我们看例子:

123456789 def test():  = int(input('请输入一个整数:'))  print('输入值为:',n)try:  test()except ValueError:  print('ValueError异常')else:  print('当前程序未出现异常')

输出结果为:

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

当我们输入值为dotcpp时

12 请输入一个整数:dotcppValueError异常

我们可以看出当程序异常的时候else语句并没执行,这些语句的区分难度并不大,大家可以通过例子去练习一下这几种常用的异常处理语句。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论