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

欢迎来到“只读课堂”!

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值