学习不止眼前的教程与笔记 还需实践与创新

搜索

首页>>编程语言>>python>>基础教程>>

python3基础教程(二十六) python3的错误和异常

发布时间:2019-10-26点击:

    在python中我们编写的程序代码在运行前,python的解释器都回去检查一遍的,如果有语法错误或者异常都会抛出,提醒我们。

    python中已经定义了很多异常与错误提示,我们也可以自定义,这样对我们以后的编写代码就有了一个检测手段。

    一:语法错误

    作为python的初学者,我们在前面说到了python的报错机制,当我们语法不正确的时候,去运行程序,python的解释器是会报错的,例如下面这种:

    这就是一个典型的语法错误提示。看到print下面的箭头没,这就表示在print这里有错,熟悉语法的同学都知道,在while Ture与print中间应该有一个冒号,不信你试试。

    二:异常

    有时候即使python的程序语法是正确的,但是在我们运行的时候也有可能发生错误,这种错误我们称之为异常。

    上面的例子中的异常类型有 ZeroDivisionError,NameError 和 TypeError。这都是异常的类型。

    三:怎么样抛出异常

    如果对自己写的程序不放心,想要检测一下有无异常,或者不知道错在哪里的时候,可以用以下的方式检查代码

    import sys
    try:
       需要检查的语句
    except OSError as err:
        print("OS error: {0}".format(err))
    except ValueError:
        print("Could not convert data to an integer.")
    except:
        print("Unexpected error:", sys.exc_info()[0])
    finally:
        print('无论如何都会执行')
    
    如果你想要的检查语句是否正确,可以把语句放在try中,

    try语句按照如下方式工作;

    1、首先,执行try子句(在关键字try和关键字except之间的语句)

    2、如果没有异常发生,忽略except子句,try子句执行后结束。

    3、如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。

    4、如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。

    5、如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。

    6、最后的finally不论有没有异常都会被执行。

    四:自定义异常

    我们可通过继承Exception类的方式来自定义异常。

    在学习自定义之前需要了解一个函数:

    raise NameError('HiThere')
    raise可以跑出一个指定的异常,就像上面的语法;输出结果如下:
    >>>raise NameError('HiThere')
    Traceback (most recent call last):
      File "", line 1, in ?
    NameError: HiThere
    自定义异常可以参考以下实例:
    >>>class MyError(Exception):
            def __init__(self, value):
                self.value = value
            def __str__(self):
                return repr(self.value)
    >>> try:
            raise MyError(2*2)
        except MyError as e:
            print('My exception occurred, value:', e.value)
    My exception occurred, value: 4
    >>> raise MyError('oops!')
    Traceback (most recent call last):
      File "", line 1, in ?
    __main__.MyError: 'oops!'
    
    上面MyError类继承了Exception异常类,然后重写可__init__与__str__方法,实现了自定义MyError异常。

    本节内容涉及到了类的时候,不了解的朋友可以搜索一下python类的相关文章先看看python的面对对象再来学习。

    也可以点击这里直通车

赞一个(0)     踩一个(0)    

相关链接