【Python异常处理】-Python零基础入门教程

前言:

  • 在 Python 开发中,代码书写时难免有疏忽或者意向不到的 bug ,导致程序 run 的过程中有可能会直接崩溃;
  • 然后对于程序猿而言,程序因 bug 崩溃是家常便饭,为了增加程序的健壮性,防止程序崩溃,我们可以对程序的有可能发生崩溃的代码增加异常处理,以达到程序稳健运行的目的。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!!!

一.Python 异常处理简介

一般情况,Python 无法正常处理程序时,就是会产生异常造成程序崩溃,举个例子:

  • 1.大家都知道分母不能为 0,如果分母为 0,程序必然崩溃
x = 3/0

程序崩溃/报错:ZeroDivisionError: division by zero

  • 2.假如 Python 文件读写 中,我们讲解了文件的读写操作,如果我们对一个不存在的文件读取内容,程序必然也会崩溃
# 读取123.txt文件,实际上该文件并不存在
fp =open("123.txt","r")

程序崩溃/报错:FileNotFoundError: [Errno 2] No such file or directory: '123.txt'

对于以上的各种异常情况,我们可以通过 try…except…解决,那么具体有哪些异常能捕获呢?如下所示
【Python异常处理】-Python零基础入门教程_第1张图片
【Python异常处理】-Python零基础入门教程_第2张图片

二.Python 异常捕获方式

1.捕获所有异常
try:
    <代码>
except:
    print("异常说明")

示例代码:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:快乐的小绵羊
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

try:
    x = 3 / 0 # 程序出现异常,不会继续执行后面的代码
    print("hello world")
except:
    print("异常说明:分母不能为0")

print("程序正常结束")


'''
输出结果:

异常说明:分母不能为0
程序正常结束
'''

2.捕获指定异常
try:
    <代码>
except:
    print("异常说明")

示例代码:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:快乐的小绵羊
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

try:
    x = 3 / 0 # 程序出现异常,不会继续执行后面的代码
    print("hello world")
except:
    print("异常说明:分母不能为0")

print("程序正常结束")


'''
输出结果:

异常说明:分母不能为0
程序正常结束
'''

3.捕获多个异常
try:
    < 语句 >
except < 异常名1 >:
    print('异常说明1')
except < 异常名2 >:
    print('异常说明2')
except < 异常名3 >:
    print('异常说明3')

该种异常处理语法的规则是:

  • a.执行 try 下的语句,如果引发异常,则执行过程会跳到第一个 except 语句。
  • b.如果第一个 except 中定义的异常名与引发的异常匹配,则执行该 except 中的语句。
  • c.如果引发的异常不匹配第一个 except,则会搜索第二个 except,允许编写的 except 数量没有限制。
  • d.如果所有的 except 都不匹配,则异常会传递到下一个调用本代码的最高层 try 代码中。
    示例代码:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:快乐的小绵羊
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

try:
    fp = open("123.txt","r") # 程序出现异常,不会继续执行后面的代码
    print("hello world")
    fp.close()
except GeneratorExit:
    print("异常说明:GeneratorExit")
except FloatingPointError:
    print("异常说明:FloatingPointError")
except OverflowError:
    print("异常说明:OverflowError")
except ZeroDivisionError:
    print("异常说明:ZeroDivisionError")
except IOError:
    print("异常说明:IOError")

print("程序正常结束")


'''
输出结果:

异常说明:IOError
程序正常结束
'''

4.万能的异常捕获
try:
    < 语句 >
except Exception as e: # 自动识别异常信息,并将异常信息保存在e中
    print('异常说明:',e)

示例代码:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:快乐的小绵羊
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

try:
    fp = open("python.txt","r") # 程序出现异常,不会继续执行后面的代码
    print("hello world")
    fp.close()
except Exception as e:
    print("异常说明:",e)

print("程序正常结束")


'''
输出结果:

异常说明: [Errno 2] No such file or directory: 'python.txt'
程序正常结束
'''

5.异常中的 else

如果判断完没有异常之后还想做其他事,就可以使用下面这样的 else 语句,注意:是在 try 中没有异常情况下,才会执行 else 之后的代码。

try:
    < 语句 >
except < 异常名1 >:
    print('异常说明1')
except < 异常名2 >:
    print('异常说明2')
else:
    < 语句 >  # try语句中没有异常则执行此段代码

示例代码:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:快乐的小绵羊
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

try:
    print("hello world")
except GeneratorExit:
    print("异常说明:GeneratorExit")
except FloatingPointError:
    print("异常说明:FloatingPointError")
except OverflowError:
    print("异常说明:OverflowError")
except ZeroDivisionError:
    print("异常说明:ZeroDivisionError")
else:
    print("i love you")

print("程序正常结束")


'''
输出结果:

hello world
i love you
程序正常结束
'''

6.异常中的finally

try…finally…语句无论是否发生异常都将会执行最后的代码。

try:
    < 语句 >
finally:
    < 语句 >

示例代码:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:快乐的小绵羊
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

try:
    fp = open("python.txt","r") # 程序出现异常,不会继续执行后面的代码
    print("hello world")
    fp.close()
except Exception as e:
    print("异常说明:",e)
finally:
    print("finally") # 无论是否发生异常都将会执行最后的代码

print("程序正常结束")


'''
输出结果:

raise Exception!
异常说明: [Errno 2] No such file or directory: 'python.txt'
finally
程序正常结束
'''

7.raise主动触发异常

可以使用 raise 语句自己触发异常,语法如下:

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,IOError )参数标准异常中任一种,args 是自已提供的异常参数。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象;示例代码如下:

# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:快乐的小绵羊
@Blog(个人博客地址): www.codersrc.com
@File:Python 异常.py
@Time:2021/04/22 08:00
@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!

"""

try:
    raise Exception("raise Exception!")  # 触发异常后,后面的代码就不会再执行
    print("hello world")
except Exception as e:
    print(e)
finally:
    print("OK")


'''
输出结果:

raise Exception!
OK
'''

在 Python 开发中,为了增加程序的健壮性,异常处理 try…except… 是必须掌握的内容.

文末福利

  • 最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等【点击领取】领取!!!

你可能感兴趣的:(python,开发语言,数据库,网络,windows,青少年编程)