欢迎来到“只读课堂”!
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 defined
In [16]:
#所以说不能定义并不存在的系统异常。
In [17]:
#现在我们来看一下怎么定义自己的异常:
In [18]:
# class MyError 这是起好的错误名字
In [19]:
class MyError(Exception):
pass
In [20]:
MyError
Out[20]:
__main__.MyError
In [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教程就到这了,欢迎下一次的收看!