零基础学PythonDay15 Python异常处理

Posted 光于前裕于后

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零基础学PythonDay15 Python异常处理相关的知识,希望对你有一定的参考价值。

昨天跟大家一起学习了Python模块,回顾之前内容看这里 零基础学Python,今天让我们开始学习Python异常处理吧。
需注意的是,【零基础学Python】此系列都使用Python3。


异常处理

异常处理可以说是Python中最常见的,虽然前几篇没有写过,但是我们在编程过程中肯定会遇到过很多报错,如下:

# 我们打印了一个没有定义的变量,报错 name 'heidou' is not defined
>>> print(heidou)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'heidou' is not defined

上面的报错NameError: name ‘heidou’ is not defined是Python开发者定义的,我们可以改成报中文错,只需要使用try except关键字

>>> try:
...  print(heidou)
... except:
...  print('黑豆没有定义')
...
黑豆没有定义

接下来再看一下try else finally用法

>>> try:
...  print(heidou)
... except:
...  print('黑豆没有定义')
... else:
...  print('黑豆定义了')
... finally:
...  print('不管有没有定义都会执行')
...
黑豆没有定义
不管有没有定义都会执行
# 现在定义一下heidou
>>> heidou = '黑豆'
>>> try:
...  print(heidou)
... except:
...  print('黑豆没有定义')
... else:
...  print('黑豆定义了')
... finally:
...  print('不管有没有定义都会执行')
...
黑豆
黑豆定义了
不管有没有定义都会执行

细心的朋友可能看到了,前面的报错NameError: name ‘heidou’ is not defined,在报错信息前面有个NameError类,而我们打印的只有报错信息(关于类是什么,明天会讲),如何加上呢?这时我们需要用到raise关键字,用法见下:

>>> if 1<2:
...  raise Exception('1小于2')
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
Exception: 1小于2
>>> if 1<2:
...  raise NameError('1小于2')
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
NameError: 1小于2

学完异常处理之后,兄弟姐妹们可能一头雾水,这个到底有什么用呢,就算我们不做异常处理,Python底层研发也替我们抛出了异常。
异常处理主要有两个作用,一个是我们自己定义异常,后期维护更容易;还有一个重要的原因,很多情况下,抛出异常的同时程序就会执行失败、停止执行,而在生产过程中,很多小异常并不影响,比如用户上传了一个空字符串,此时只要我们捕获这个异常,写入日志就可以了,如果因为这个导致程序停止,系统崩溃,肯定得不偿失啦。

兄弟姐妹们学废了吗

以上是关于零基础学PythonDay15 Python异常处理的主要内容,如果未能解决你的问题,请参考以下文章

零基础学PythonDay15 Python异常处理

零基础学PythonDay16 Python面向对象

零基础学PythonDay16 Python面向对象

零基础学PythonDay16 Python面向对象

零基础学PythonDay2 Python基本语法

零基础学PythonDay2 Python基本语法