码迷,mamicode.com
首页 > 编程语言 > 详细

python异常处理

时间:2018-02-27 21:29:10      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:block   --   ISE   顺序   col   lock   格式   自定义异常   ini   

异常处理格式:

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异常处理

标签:block   --   ISE   顺序   col   lock   格式   自定义异常   ini   

原文地址:https://www.cnblogs.com/heqiuyong/p/8480296.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!