程序报错也不怕!Python异常大全

664 阅读3分钟

学习编程,对于初入门无助的初学者来说,最怕的不是不会写代码。

而是最怕Python程序抛出一串恐怖的字符串,然后整体程序就终止了。

然后就很无解了,怎么才能解决这个问题。异常这个鬼,不仅让初学者恐怖,经常使用的中鸟,老鸟也是很痛苦。

一个快运行出结果的程序,由于异常而中途退出,这个心情又有多滴血?

引出这里要介绍的预防Python“出轨”的办法。请看下面。

Python异常语法

是不是经常在Python运行时,出现错误导致异常退出而烦恼?

是不是不知道错误出现在哪里而烦恼?

解决办法来了,让Python的异常语法来帮忙。

Python版本不同的异常机制

Python2和Python3的Exception差异:

  在Python 2.x用法实例:

1    try:
2         ......
3    except Exception,e:
4        raise e

  在Python 3.x的用法实例:

1      try:
2          ......
3      except Exception as e:
4           raise e

可以看到,Python 3中是as e.

异常语法概要

尝试捕获异常(接收异常通知),将程序转为正常状态并继续执行。

语法说明:

as 子句是用于绑定错误对象的变量,可以省略

except 子句可以有一个或多个,但至少要有一个

​ else 子句最多只能有一个,也可以省略

​ finally 子句最多只能有一个,也可以省略

实际场景中的异常模式

异常的常见模式:

#-------------模块一:except 错误类型,捕获异常类型---------------------------
# except ValueError:  # 只有在有异常时才会执行
#     print('在try的内部语句中发生了值错误,已处理并转为正常状态')
# except ZeroDivisionError:
#     print('输入人数为0,分苹果失败')
#-------------------------------------------------------------------------

#---模块二:except(错误类型1,错误类型2):满足这两个错误类型都执行这个函数------
# except (ValueError, ZeroDivisionError):
#     print('苹果不分了')
#--------------------------------------------------------------------------

#--模块三:except:除了捕获的之外,不管什么异常都执行此函数----------------------
# except ValueError:  # 只有在有异常时才会执行
#     print('在try的内部语句中发生了值错误,已处理并转为正常状态')
# except:
#     print('收到除ValueError之外的错误通知')
#---------------------------------------------------------------------------

#--模块四:as 变量: 将捕获的错误信息用变量绑定----------------------------------
# as 的用法
# except ValueError as err:
#     print('错误的值是:', err)  # invalid literal for int() with base 10: 'aaa'

    # 10个苹果您想分给几个人?
    # 请输入人数: aaa
    # 错误的值是: invalid literal for int() with base 10: 'aaa'
    # 程序正常退出
#---------------------------------------------------------------------------

#--模块五:else的用法,只有在try是没有异常的时候才会执行--------------------------
# except ValueError:
#     print('苹果不分了')
# else:  # 只有在try没有发生错误时才会执行
#     print('在当前try语句内部,没有发生任何异常,程序正常执行')
#----------------------------------------------------------------------------

#--模块六:finally的用法,不管try有没有错误,其下的语句块都会执行------------------
# finally字句的用法
except ValueError:
    print('苹果不分了')
except:  # 除ValueError异常外的异常
    print('错误值是:0' )
else:  # 如果没有异常才执行
    print('else子句被执行了')
finally:  # 不管有没有异常都会执行的语句
    print('finally子句被执行了')
print('程序正常退出')

今天的分享就到这,有兴趣更深入Python学习的,欢迎加入我们【python学习交流群】