前言:
而今同学们对“python输入异常处理”可能比较注意,各位老铁们都想要剖析一些“python输入异常处理”的相关知识。那么小编同时在网上汇集了一些有关“python输入异常处理””的相关资讯,希望大家能喜欢,小伙伴们快快来了解一下吧!今日分享歌曲
歌名:有你的快乐
歌手:王若琳
音量:42%
作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。
借助异常处理机制,甚至在程序崩溃前也可以做一些必要的工作,例如将内存中的数据写入文件、关闭打开的文件、释放分配的内存等。
Python 异常处理机制会涉及 try、except、else、finally 这 4 个关键字,同时还提供了可主动使程序引发异常的 raise 语句。
Python语法错误
语法错误,也就是解析代码时出现的错误。当代码不符合 Python 语法规则时,Python解释器在解析时就会报出 SyntaxError 语法错误,与此同时还会明确指出最早探测到错误的语句。
print "Hello,Moke"
Python3.X中 上面示例中这种语法是错误的,所有语法错误提示:SyntaxError
Python运行时错误
运行时错误,即程序在语法上都是正确的,但在运行时发生了错误。
a=1/0print(a)
在 Python 中,把这种运行时产生错误的情况叫做异常(Exceptions)。
当一个程序发生异常时,代表该程序在执行时出现了非正常的情况,无法再执行下去。默认情况下,程序是要终止的。如果要避免程序退出,可以使用捕获异常的方式获取这个异常的名称,再通过其他的逻辑代码让程序继续运行,这种根据异常做出的逻辑处理叫作异常处理。
那么,应该如何捕获和处理异常呢?
Python 中,用try except语句块捕获并处理异常,其基本语法结构如下所示:
try: 可能产生异常的代码块except [ (Error1, Error2, ... ) [as e] ]: 处理异常的代码块1except [ (Error3, Error4, ... ) [as e] ]: 处理异常的代码块2except [Exception]: 处理其它异常
从try except的基本语法格式可以看出,try 块有且仅有一个,但 except 代码块可以有多个,且每个 except 块都可以同时处理多种异常。
try except 语句的执行流程如下:
首先执行 try 中的代码块,如果执行过程中出现异常,系统会自动生成一个异常类型,并将该异常提交给 Python 解释器,此过程称为捕获异常。
当 Python 解释器收到异常对象时,会寻找能处理该异常对象的 except 块,如果找到合适的 except 块,则把该异常对象交给该 except 块处理,这个过程被称为处理异常。如果 Python 解释器找不到处理异常的 except 块,则程序运行终止,Python 解释器也将退出。
def getHTMLText(url): headers = { 'user-agent': random.choice(ua_list1) } print(headers) try: r=requests.get(url,headers=headers,timeout=10) r.raise_for_status() #如果状态不是200,引发HTTPerror r.encoding = r.apparent_encoding return r.text except: return "产生异常"
上面定义了一个request库获取html页面文本信息,如果get过程正常则返回文本信息,如果异常则返回“产生异常”提醒。
事实上,不管程序代码块是否处于 try 块中,甚至包括 except 块中的代码,只要执行该代码块时出现了异常,系统都会自动生成对应类型的异常。但是,如果此段程序没有用 try 包裹,又或者没有为该异常配置处理它的 except 块,则 Python 解释器将无法处理,程序就会停止运行;反之,如果程序发生的异常经 try 捕获并由 except 处理完成,则程序可以继续执行。
else引入
在原本的try except结构的基础上,Python 异常处理机制还提供了一个 else 块,也就是原有 try except 语句的基础上再添加一个 else 块,即try except else结构。
使用 else 包裹的代码,只有当 try 块没有捕获到任何异常时,才会得到执行;反之,如果 try 块捕获到异常,即便调用对应的 except 处理完异常,else 块中的代码也不会得到执行。
try: result = 20 / int(input('请输入除数:')) print(result)except ValueError: print('必须输入整数')except ArithmeticError: print('算术错误,除数不能为 0')else: print('没有出现异常')print("继续执行")finally
Python 异常处理机制还提供了一个 finally 语句,通常用来为 try 块中的程序做扫尾清理工作。
注意,和 else 语句不同,finally 只要求和 try 搭配使用,而至于该结构中是否包含 except 以及 else,对于 finally 不是必须的(else 必须和 try except 搭配使用)。
finally 语句的功能是:无论 try 块是否发生异常,最终都要进入 finally 语句,并执行其中的代码块。
finally 块的强大还远不止此,即便当 try 块发生异常,且没有合适和 except 处理异常时,finally 块中的代码也会得到执行。
基于 finally 语句的这种特性,在某些情况下,当 try 块中的程序打开了一些物理资源(文件、数据库连接等)时,由于这些资源必须手动回收,而回收工作通常就放在 finally 块中。
总结
勇敢追求梦想,不断挑战自我,不轻易放弃,坚持到底,就一定能够实现自己的理想和目标。
标签: #python输入异常处理