这篇文章运用简单易懂的例子给大家介绍 Python运行出现异常如何处理,代码非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
成都创新互联一直通过网站建设和网站营销帮助企业获得更多客户资源。 以"深度挖掘,量身打造,注重实效"的一站式服务,以做网站、网站制作、移动互联产品、成都全网营销推广服务为核心业务。十余年网站制作的经验,使用新网站建设技术,全新开发出的标准网站,不但价格便宜而且实用、灵活,特别适合中小公司网站制作。网站管理系统简单易用,维护方便,您可以完全操作网站资料,是中小公司快速网站建设的选择。
首先,程序在运行的过程中,产生了异常,这时,我们可能会有两种想法,第一种是针对这个异常做某些特殊的处理来进行程序的降级处理;第二种是希望程序忽略这个异常继续执行下去,这个异常可能并不干扰主逻辑的执行。
那这个时候我们怎么办呢?
有编程经验的同学马上就想到了,那我们去 try 它啊,在 Python 中,我们同样可以去 try 它,从字面意思上理解就已经非常清晰明确了,以下的内容是要尝试执行的。
语法:
try: ...(可能产生异常的代码) except: ...(产生异常后的处理代码)
但是,还会有一种情况,不管上面的代码有没有出错,有一部分代码我们总希望它能执行,这时,我们可以添加另一个关键字 finally 。
从字面意思可以就可以看出来,这个是最后要执行的意思。
语法:
try: ...(可能产生异常的代码) except: ...(产生异常后的处理代码) finally: ...(一定要执行的代码)
下面开始我们今天的代码演示。
我们先拟定一个场景,我们定义一个除法函数,如果除数不为 0 ,是可以正常返回值的,如果除数为 0 ,那么整个程序肯定会直接异常报错。
def division(x, y): try: return x / y except: print('程序报错啦!!!') return None print(division(15, 5))
输出结果如下:
3.0
这时程序是可以正常输出的,这时我们修改一下调用的参数,改为 division(15, 0) ,看下输出结果:
程序报错啦!!! None
可以看到,这里打印了我在程序中设置的 None ,并没有之前的红色的异常信息抛出。这里的 except 会捕捉我们所有的异常信息,但是,异常信息也是有很多分类的,比如我们之前遇到过的访问字典中不存在的 key 的异常 KeyError ,比如我们刚才捕捉到的 ZeroDivisionError 异常,还有也是我们之前遇到过的数组下标越界的异常 IndexError 。
比如这里的代码我可以捕捉更加详细的异常信息 ZeroDivisionError 。
def division1(x, y): try: return x / y except ZeroDivisionError: print('程序报错啦!!!') return None print(division1(15, 0))
输出结果如下:
程序报错啦!!! None
那么,看到这里,你可能会有一个疑问,我们为什么要对异常分类,直接抓取所有异常不是更方便么?
当然,对于逻辑比较简单的程序,直接捕捉所有异常是更方便的,但是在某些特定的业务场景下,一段程序可能会抛出多种异常,我们希望根据异常种类的不同,定制不同的解决方案,至少我们知道当前的程序是抛出了什么异常,这时,程序异常分类就显得尤为重要。
我们这里演示一下,如果我们输出的值不是数字,是字符串的话。。。。
def division2(x, y): try: return x / y except ZeroDivisionError: print('您输出的除数为 0 !!!') return None except TypeError: print('您输出的参数类型非法!!!') return None print(division2('python', 0))
输出结果如下:
您输出的参数类型非法!!! None
对的,你没有看错,异常信息是能捕捉多个的,是可以并排写的。至于先抛出那个,就要看那个异常先发生了。
因为示例代码的逻辑过于简单,异常抛出顺序无法演示,请各位同学见谅(li zhi qi zhuang)。
上面我们还提到了 finally ,我们接着来演示 finally 这个关键字的使用。
def division3(x, y): try: return x / y except ZeroDivisionError: print('您输出的除数为 0 !!!') return None except TypeError: print('您输出的参数类型非法!!!') return None finally: print('你一定能看到我!!!') print(division3(15, 3)) print(division3('python', 0))
可以看到,这里我使用有异常和正常无任何问题的数据进行测试,结果如下:
你一定能看到我!!! 5.0 您输出的参数类型非法!!! 你一定能看到我!!! None
确实, finally 中的内容是能正常打印的,这里多提一句,这里经常的使用方式是来关闭一些 I/O 读写操作或者一些外部连接,如数据库、缓存服务等。
关于 Python运行出现异常如何处理就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。