专业做w7系统的网站,网站的简介怎么在后台炒做,广安建设厅官方网站,颖灵信息科技网站建设异常
在编程中#xff0c;异常是指程序运行过程中发生的意外事件#xff0c;这些事件通常中断了正常的指令流程。它们可能是由于错误的输入数据、资源不足、非法操作或其他未预料到的情况引起的。Python中#xff0c;当遇到这类情况时#xff0c;会抛出一个异常对象#…异常
在编程中异常是指程序运行过程中发生的意外事件这些事件通常中断了正常的指令流程。它们可能是由于错误的输入数据、资源不足、非法操作或其他未预料到的情况引起的。Python中当遇到这类情况时会抛出一个异常对象如果这个异常没有被捕获处理程序将会终止执行。
异常处理
异常处理是一种编程技术用于捕捉程序运行过程中发生的异常并采取适当措施来响应这些异常而不是让程序直接崩溃。这包括捕获异常、分析异常类型以及根据异常类型决定如何恢复或优雅地结束程序。
Python提供了try、except、else和finally语句来实现异常处理机制
try: 尝试执行的代码块可能抛出异常的地方。except: 捕获并处理特定类型的异常。可以有多个except子句来捕获不同类型的异常。else: 如果没有异常发生则执行这里的代码块。finally: 不管是否发生异常都会执行的代码块通常用来清理资源。
处理示例
针对常见的一些异常做处理示例。
处理处 ZeroDivisionError 异常
在学习四则运算的时候我们都知道除法运行中除数不能为0。 Python中同样也有四则运算我们练习的时候自然会避免出现除数为0的情况。在实际编程过程中我们很少会除以一个固定数值大多数时候都是除以一个变量而这个变量的值往往是在程序运行中根据各种情况计算出来的这个时候我们就没办法保证除数不能为0了。那么真的遇到除数为0的情况Python会如何应对呢 程序执行出现错误提示 ZeroDivisionError division by zero。这个是很明显的提示并且明确指出在模块第1行。 为了防止程序错误中止我们可以通过异常处理是程序继续执行。
try:result 10 / 0 # 这里会尝试执行除法运算
except ZeroDivisionError:# 捕获到ZeroDivisionError后输出提示信息print(错误不能除以零)
print(程序继续执行)程序打印了错误的提示然后正确的向下执行。
这就是异常处理的基础语法和使用但是有时候程序出现异常不出现异常是两种处理方法这个时候我们就需要用到else语句了。
div 2
div * 2
div 3
div // 3
div - 1
try:result 10 / div # 这里会尝试执行除法运算
except ZeroDivisionError:# 捕获到ZeroDivisionError后输出提示信息print(错误不能除以零)
else:print(结果是, result)
print(程序继续执行)根据结果我们发现程序走了else的分支那么很明显异常没有发生输出结果也符合预期。
最后讲一下比较特殊的finally。这个语句下的分支是不管异常发生不发生都能够执行的语句。通常会用来关闭某些资源比如上篇说的文件的资源就会在finally代码块中调用close()方法关闭文件资源。
finally语句使用新的异常进行示例。
FileNotFoundError
在进行文件处理的时候可能不小心填错了地址或者写错了文件格式。这个时候调用文件流的open方法就会出现异常。
file open(example.txt)
content file.read()
print(content)一个很明显的文件不存在的提示。我们同样使用try…except进行异常处理
try:file open(example.txt)content file.read()
except FileNotFoundError:print(文件未找到)
else:print(content)根据我们学习的文件流知识吗我们在文件操作过程中使用了open函数就一定要调用close函数关闭资源。那么流关闭的调用应该放在哪里呢仔细想想放在正常流程中程序出现错误怎么办放在异常处理中那正常逻辑不是得也写一份那么finally无疑是最好的选择了。 写在finally中有两个好处 确保资源总是被释放无论try块中的代码是否抛出异常finally块都会执行。这意味着即使程序因为某些未预料到的错误提前退出finally中的清理代码也会运行从而确保打开的资源被正确关闭防止资源泄露。 逻辑清晰将资源清理工作放在finally块中可以使得异常处理逻辑except块专注于处理异常本身而资源管理则由finally统一负责这样代码结构更加清晰便于理解和维护。 file open(example.txt)
try:content file.read()print(content)
except FileNotFoundError:print(文件未找到)
finally:file.close() # 确保文件被关闭这样的话资源最终都会关闭。
多个异常
实际编写代码时代码通常会几行几十行那么出现异常的种类也可能不止一种那么怎么去处理多种异常呢
try:num int(input(请输入一个数字: ))result 10 / num
except ValueError:print(输入的不是有效的数字)
except ZeroDivisionError:print(不能除以零)像这样按顺序使用except语句处理即可。
那么问题又来了两个三个甚至四个五个我都一行行去写没问题十几个怎么办异常处理比代码还长谁看谁头痛。
python有处理所有异常的办法。
try:# 可能抛出任何类型的异常的代码...
except Exception as e:print(f发生了异常: {e})使用Exception这表示所有的异常都会被捕获住。
问题又又来了我就想单独处理FileNotFoundError其他异常再统一处理行不行
当然可以 请看。
try:# 可能抛出多种类型的异常的代码file open(nonexistent_file.txt) # 示例尝试打开一个不存在的文件content file.read()print(content)
except FileNotFoundError:print(错误指定的文件未找到。)
except Exception as e:print(f发生了其他异常: {e}) # 捕获除FileNotFoundError之外的所有异常
finally:# 关闭文件等清理操作如果文件已成功打开的话if file in locals() and not file.closed:file.close()在python中except语句存在多个同时使用时按从上到下的顺序执行。按上面代码来解释就是python发现你程序执行的时候出现异常先检查是不是FileNotFoundError是就在这个except中进行处理不是的话再往下执行匹配下一个异常类。这样的话别说处理一个处理十个都没问题。
结尾
python的异常处理就这些内容了大家在实际使用的时候要灵活运用根据不同的业务和场景灵活使用try…except…else…finally来得到自己想要的结果。
作业 查询常见的一些异常。 自己编写代码处理这些异常从单个到多个再到单个所有的模式。