python异常处理

Posted heqiuyong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python异常处理相关的知识,希望对你有一定的参考价值。

异常处理格式:

try:
执行语句1
raise 自定义异常类型()

except 自定义异常类型:

执行语句2

except (异常类型1,异常类型2,……):   #多个异常类型分别用逗号隔开

执行语句3

except Exception:        #万能匹配,不返回错误类型!

执行语句4

else:

执行语句5

finally:

执行语句6

 

简要说明:

1.raise 语句可以自定义报错信息,如上。

2. raise后的语句是不会被执行了,因为已经抛出异常,控制流将会跳到异常捕捉模块。

3. except 语句可以一个except后带多个异常,也可以用多个语句捕捉多个异常,分别做不同处理,如果不清楚具体异常类型,最后可用Exception做万能匹配。

4. except语句捕捉的异常如果没有发生,那么except里的语句块是不被执行的。而是执行else里的语句

5. 在上面语句中try/except/else/finally所出现的顺序必须是try–>except X–>except–>else–>finally,即所有的except必须在else和finally之前,else(如果有的话)必须在finally之前,而except X必须在except之前。否则会出现语法错误。

6.else和finally都是可选的.

7.在上面的完整语句中,else语句的存在必须以except X或者except语句为前提,如果在没有except语句的try block中使用else语句会引发语法错误。

 

代码例子:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

class MyError(Exception): #自定义一个异常类MyError,继承父类Exception(异常万能类)
def __init__(self,message):
self.message = message
self.code = 100
def __str__(self):
return self.message
try:
def get_num():
num = int(input("输入一个偶数>>>:").strip())
if num % 2 != 0:
raise MyError("错误信息:你输入的不是一个偶数") # raise语句会自动触发异常
get_num()
except MyError as e: # 匹配自定义异常
print(e) #提示错误信息
print("错误代码:%d"%e.code) #提示错误代码
except ValueError: # 匹配自带异常
print("你输入的不是一个整数")
except Exception:
print("未知错误!")
else:
print(">>>:输入正确")
finally:
print("------不管输入是否有误,都执行------")



























以上是关于python异常处理的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

python常用代码片段总结

使用片段中的处理程序时出现非法状态异常

你如何在 python 中处理 graphql 查询和片段?

Java异常处理机制

java 反射代码片段