Python快速上手系列--异常处理--详解篇

简介: Python快速上手系列--异常处理--详解篇

这里是清安,本章所说的就是我们经常遇到的一个问题,报错、异常。我们应该如何处理,让它不影响后面的程序运行。

异常

首先我们看看一个简单的示例。

print(2/0)

其结果可想而知,当然是报错了!程序被终止了!

这里会提示用户,指出这个异常对象,有没有什么办法不让它报这样的错误呢,当然有!

try-except就可以帮助到我们。

try:
    print(2/0)
except ZeroDivisionError:
    print('不能这样计算哦')

用法:try:里面是主程序,except:里面写打印提示语句或者其他的程序都可以

清安这里except里面还加入了异常ZeroDivisionError,这里不加也是可以的哦,其效果类似。当然,如果你想准确捕捉异常的话,肯定还是需要加上的。

来看看我们处理python的异常后的效果:

其实,这里有点类似于if-else,但是这里先由主程序运行,再到判断,再到避免,避免成功后继续运行代码。看看下面的示例吧。

补充点:

try:
    print(2/0)
except ZeroDivisionError as e:
    print(e, '不能这样计算哦')

这里比上述多写了一个as e,为什么呢,打印默认错误提示。但是后面我仍然写了我们想要它给我的一个错误提示,这里主要是起一个对比作用,实际情况上,这里写一种就好。

另外,异常种类有很多,这里并没有一一列举了,各位学完可以自己慢慢琢磨。

3.1、正确使用异常,避开崩溃

while True:
    first_name = input("请输入名字:")
    if first_name == 'zhangsan':
        break
    last_name = input("请输入名字:")
    if last_name == 'lisi':
        break
    full_name = int(first_name + last_name)
    print(full_name)

这段程序,看似没什么问题,当我们输入英文字符的时候,就会报错了,因为清安加了一个int类型的字符转换进去哦。非整型相加就会报错!!!

看到了吧报了ValueError错误,接下来我们避免它:

while True:
    first_name = input("请输入名字:")
    if first_name == 'zhangsan':
        break
    last_name = input("请输入名字:")
    if last_name == 'lisi':
        break
    try:
        full_name = int(first_name + last_name)
    except:
        print("整型不能这样相加哦!")
    else:
        print(full_name)

这里我们就可以避免它因为报错而终止程序了,从未接着运行代码,看效果:

这里就成功的避开了异常告示,我们可以继续进行while循环。

3.2、处理FileNotFoundError错误

这里其实就是找不到文件,而报出的异常。让我们看例子:

with open('name_t.txt','r') as nt:
    come = nt.read()

我们读取一个没有创建的文本,python就会告诉我们:

没有发现name_t.txt文件,处理方式呢,跟上处相类似。

try:
    with open('name_t.txt','r') as nt:
        come = nt.read()
except:
    with open('123.txt','r') as rd:
        come_1 = rd.read()
        print(come_1.split())
    print("没有找到这个文件哦")

这里为了更好的辨别的。我们使用两个文本做了对比,使用try-except做了一个判断,打开了第一个文件name_r.txt文件,并读取,后面我们使用except做了打开另一个文件并且读取并输出内容。split是将文本中的内容以空格为分隔符将字符串拆分多个部分,呈现列表的形式给倒我们。

解惑:这里也就先当与判断有没有name_t.txt文件,没有文件python就会报出异常,我们使用except输出一个没有找到文件,将这个错误避开。进而执行下一步操作,打开另一个文件。

又有好奇宝宝问了,这里你得with跟最后一个print同级,不是先运行第一个再后面吗,这里我们再try运行后下一步就已经执行了except了,所以只是打印结果的前后顺序不同而已。

3.3、使用函数打开多个文件

def name_txt(file_name):
    try:
        with open(file_name,'r') as nt:
            nt = nt.read()
    except:
        print("没有找到这个文件哦")
    else:
        print(nt.split())
file_name = ['123.txt','321.txt','dog.txt']
for file_names in file_name:
    name_txt(file_names)

这里我们传递多个文本文件使用的是for循环的方式,定义一个形参,将形参给到with open,并且我们用try-except做了避免错误的方法,让循环可以循环整个列表,清安这里还给出了一个没有的文本文件验证这个错误是否正常避免哦。

3.4、让避免信息不显示

def name_txt(file_name):
    try:
        with open(file_name,'r') as nt:
            nt = nt.read()
    except:
        pass
    else:
        print(nt.split())
file_name = ['123.txt','321.txt','dog.txt']
for file_names in file_name:
    name_txt(file_names)

我们只需要直接将避免错误的信息去掉就好了,改成pass直接忽略掉这个错误信息即可。

注:这里告诉你的是最简便的方法,此类还有很多的详细用法,但是作为快速上手,这类方法先做了解,后续会慢慢详细的讲解

3.5、不论怎样都执行

try:
    print(2/0)
except:
    print("不能这样算,回去好好复习")
finally:
    print('你好笨')

这里的finally不论怎么样,它都会执行。此处做一个了解,看你得需求怎么样,根据实际情况来定,看是否需要用到finally。

目录
相关文章
|
1月前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
|
1月前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
|
3月前
|
数据库连接 Python
Python中的异常处理除了Try语句,你还会啥?
Python中的异常处理除了Try语句,你还会啥?
65 1
|
3月前
|
Python
|
2月前
|
Python
Python编程中的异常处理:理解与实践
【9月更文挑战第14天】在编码的世界里,错误是不可避免的。它们就像路上的绊脚石,让我们的程序跌跌撞撞。但是,如果我们能够预见并优雅地处理这些错误,我们的程序就能像芭蕾舞者一样,即使在跌倒的边缘,也能轻盈地起舞。本文将带你深入了解Python中的异常处理机制,让你的代码在面对意外时,依然能保持优雅和从容。
156 73
|
1月前
|
安全 Java 程序员
Python 异常处理!
本文详细介绍了Python中的异常处理,包括try、except和finally语句的使用方法。文章区分了语法错误与异常,并列举了Python中常见的异常类型,如`SyntaxError`、`TypeError`等。通过具体示例展示了如何使用try-except块捕获和处理异常,以及如何结合else和finally子句增强代码的健壮性和可读性。此外,还介绍了如何使用raise语句主动抛出异常。通过合理的异常处理,可以提高程序的可靠性与调试效率,但也可能带来性能开销和代码复杂度的增加。
40 4
|
1月前
|
IDE 开发工具 开发者
Python中的异常处理与调试技巧
【9月更文挑战第32天】在软件开发中,错误和异常是难以避免的。了解如何有效处理这些情况对于编写健壮、可靠的代码至关重要。本文将深入探讨Python中的异常处理机制,介绍如何使用try-except语句捕捉异常,以及如何利用Python的调试工具来诊断问题。通过实际示例,我们将展示如何优雅地处理异常并提高代码质量。
|
2月前
|
对象存储 索引 Python
30天拿下Python之异常处理
30天拿下Python之异常处理
31 3
|
1月前
|
安全 数据库连接 开发者
深度解析Python上下文管理器:优雅资源管理与异常处理
深度解析Python上下文管理器:优雅资源管理与异常处理
20 0
|
3月前
|
IDE 测试技术 开发工具
Python接口自动化测试框架(基础篇)-- 讨厌的异常处理
本文详细讨论了Python中的异常处理机制,包括异常捕获、异常抛出、自定义异常、环境清理,以及使用上下文管理器确保资源正确释放,最后还提到了Python的标准异常类。
37 1
下一篇
无影云桌面