zoukankan      html  css  js  c++  java
  • python自定义异常,使用raise引发异常

    1.自定义异常类,自定义的异常类必须是Exception或者Error的子类!

     1 #!/usr/bin/env python
     2 # encoding: utf-8
     3 
     4 class IllegalException(Exception):
     5     '''
     6     Custom exception types
     7     '''
     8     def __init__(self, parameter, para_value):
     9         err = 'The parameter "{0}" is not legal:{1}'.format(parameter, para_value)
    10         Exception.__init__(self, err)
    11         self.parameter = parameter
    12         self.para_value = para_value

    2.try中使用raise语句来引发一个异常,其中check_positive_int(para_list)函数是用来检查输入的list是否为正整数。

     1 def check_positive_int(para_list):
     2         '''
     3         @summary: check whether the parameter is positive integer
     4         @param: para_list: a list,para_list: a list,[{'key':'para1','value':para1},{'key':'para2','value':para2}]
     5         '''
     6         for item in para_list:
     7             if not (item['value'] > 0 and isinstance(item['value'], int)):
     8                 return item['key'], '{0} is not a positive integer'.format(str(item['value']))
     9         return True
    10 
    11 
    12 try:
    13     integer = check_positive_int([{'key':'para1', 'value':1}, {'key':'para2', 'value':-2}])
    14     if integer != True:
    15         raise(IllegalException(integer[0], integer[1]))
    16 except IllegalException, x:
    17     print 'x--->', x
    18     print 'x.parameter--->', x.parameter
    19     print 'x.para_value--->', x.para_value
    20 else:
    21     print 'NO ERROR'

    3.执行try,由于我们要校验的list[{'key':'para1', 'value':1}, {'key':'para2', 'value':-2}]中有负数值,所以raise我们自定义的异常。

    输出结果为:

    1 x---> The parameter "para2" is not legal:-2 is not a positive integer
    2 x.parameter---> para2
    3 x.para_value---> -2 is not a positive integer
  • 相关阅读:
    阅读Unity官方技术blog笔记
    设计模式-具有Model-View-ViewModel设计模式的WPF应用
    关于PureMVC的一点想法
    管窥WOWUIInterface代码
    Lua 5.4引入的新变动
    Unity手册SpriteAtlasManager翻译
    2D向量的数学计算
    提前编译(AOT编译)Wiki翻译
    Lua5.3手册标准库拾遗
    C#异步语法糖的苦与甜
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/7810696.html
Copyright © 2011-2022 走看看