欢迎来到“只读课堂”!
In [1]:
#之前在课程中,大家已经对异常有所了解。In [2]:
#这节课,我们将要做一个跟以前不同的异常程序。使用raise语句抛出我们自定义错误提示的错误:
def func():
raise Exception('this is an error')
print 'go on'
func()
在python中所有的异常都是从BaseException这个根异常类派生的
有三个异常是从这个根异常类派生的:SystemExit,Keyboardlterrupt和Exception
In [3]:
#下面我们开始来敲代码!In [4]:
def func(): raise Exception('你这个函数不对') print('123') func() --------------------------------------------------------------------------- Exception Traceback (most recent call last) <ipython-input-4-811f5ea51b3c> in <module>() 3 print('123') 4 ----> 5 func() <ipython-input-4-811f5ea51b3c> in func() 1 def func(): ----> 2 raise Exception('你这个函数不对') 3 print('123') 4 5 func() Exception: 你这个函数不对In [5]:
#这个地方就会出现一个错误,显示“你这个函数不对”。In [6]:
#同样也可以这样抛出:In [8]:
def func(): raise NameError('不对') print('123')In [9]:
func() --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-9-bd1982955a12> in <module>() ----> 1 func() <ipython-input-8-07a382679c1a> in func() 1 def func(): ----> 2 raise NameError('不对') 3 print('123') NameError: 不对In [10]:
#我们就可以手动地抛出错误。In [11]:
#用异常多的地方:In [12]:
#比如说,有人修改游戏地址,游戏外挂,程序员就会用raise语句来检测并抛出修改的游戏玩家,从而终止游戏。In [13]:
#但是你千万不可以raise一个不存在的错误:In [14]:
def func(): raise MyError('不对')In [15]:
func() --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-15-bd1982955a12> in <module>() ----> 1 func() <ipython-input-14-13872cc18ff8> in func() 1 def func(): ----> 2 raise MyError('不对') NameError: name 'MyError' is not definedIn [16]:
#所以说不能定义并不存在的系统异常。In [17]:
#现在我们来看一下怎么定义自己的异常:In [18]:
# class MyError 这是起好的错误名字In [19]:
class MyError(Exception): passIn [20]:
MyErrorOut[20]:
__main__.MyErrorIn [21]:
#这样就可以定义好自己的错误In [22]:
#下面,让我们来实际应用一下这个Error:In [23]:
def func(): raise MyError('不对')In [24]:
func() --------------------------------------------------------------------------- MyError Traceback (most recent call last) <ipython-input-24-bd1982955a12> in <module>() ----> 1 func() <ipython-input-23-13872cc18ff8> in func() 1 def func(): ----> 2 raise MyError('不对') MyError: 不对In [25]:
#这样就会抛出一个“不对”,而不是像之前那样抛出一个“not defined”。class MyError(Exception):
def init(self): #构造器函数
Exception.init(self) #调用基类的init进行初始化
def checklist(mylist,index):
print mylist[index]
try:
mylist = input('type a order:')
index = input('type a index:')
if index > len(mylist):
raise Myerror #raise抛出自定义错误
except Myerror: #捕获错误
print ('the index is out of range!')
else:
checklist(mylist,index)
In [26]:
#不要直接复制哦,部分代码是没有空格过的哦本次只读课堂的python教程就到这了,欢迎下一次的收看!