zoukankan      html  css  js  c++  java
  • 通过try、except和else的使用来使Python程序更加“强壮”

    在执行的程序中,难免会碰到因为一些原因如输入输出导致致命性错误产生的情况(如因为输入的文件名错误而导致无法运行相关的代码。)。此时你不希望程序直接挂掉,而是通过显示一些信息,使其平稳的结束。此时,就可以使用try,except和else这三个关键字来组成一个包容性很好的程序。

    分别解释三个关键字:

    try:执行可能会出错的试探性语句,即这里面的语句是可以导致致命性错误使得程序无法继续执行下去

    except:如果try里面的语句无法正确执行,那么就执行except里面的语句,这里面可以是错误信息或者其他的可执行语句

    else:如果try里面的语句可以正常执行,那么就执行else里面的语句(相当于程序没有碰到致命性错误)

    我们通过一个实例程序来解释这三个关键字的用法:

    #coding:gbk
    "Module documentation"
    #import
    #variable
    #class
    #function

    if __name__ == '__main__':
    fname = raw_input("Please input the file's name:")
    print fname

    try: #尝试执行一个或多个语句
    fobj = open(fname,"r")    #尝试打开一个文件
    except IOError, error: #如果无法执行"try"里面的语句,那么就执行except里面的语句 另外需要注意的是,"error"相当于是一个变量,用于存储错误信息的
    #标准语句和相关信息。
    print "*** file open error", error

    else: #如果try里面的语句成功执行,那么就执行else里面的语句
    for eachline in fobj:
    print eachline,
    fobj.close()

    假设try里面的语句无法正常执行,那么其输出结果为:

    Please input the file's name:s
    s
    *** file open error [Errno 2] No such file or directory: 's'

  • 相关阅读:
    接口方法上的注解无法被@Aspect声明的切面拦截的原因分析
    SpringBoot整合Netty
    简单的RPC框架
    基于redis的分布式锁的分析与实践
    8种方案解决重复提交问题
    领券中心项目,如何用 Redis 做实时订阅推送的?
    IM(即时通讯)服务端(二)
    IM(即时通讯)服务端(一)
    0xC00000FD: Stack overflow (parameters: 0x00000000, 0x003E2000).错误
    int (*a)[10]和int *a[10]的区别
  • 原文地址:https://www.cnblogs.com/lordage/p/5722086.html
Copyright © 2011-2022 走看看