Python初级第5课——我自己的异常(只读课堂)

    科技2022-08-12  93

    欢迎来到“只读课堂”!

    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教程就到这了,欢迎下一次的收看!

    Processed: 0.010, SQL: 8