您的位置: 网站首页> python进阶> 当前文章

python自定义异常实现(BaseException与Exception差别)

老董2021-11-18169围观,146赞

  为什么要自定义异常类

  在实际开发中,业务场景是千变万化的,某些时候python内置的异常类型可能用起来不是很便捷,所以需要自定义异常。假设要办理信用卡,在银行会权衡一个人收入情况时自定义了1个异常类。

# 收入太低
# 收入太低异常
class TooLowError(Exception):
  pass


try:
  raise TooLowError
except Exception:
  print('-----too low-----') 
-----too low-----



  继承Exception还是BaseExceptio类

  自定义一个异常类需要继承Exception类或者其子类,虽然BaseExceptio是Exceptio的父类,但如果继承BaseException可能会导致捕获不到自定义异常。python文档中也建议程序员从Exception类或它的一个子类派生新的异常,而不是从BaseException派生。

# 收入太低异常
class TooLowError(BaseException):
  pass


try:
  raise TooLowError
except Exception:
  print('-----too low-----') #无输出
Traceback (most recent call last):
  File "C:UsersAdministratorDesktop	est.py", line 65, in <module>
    raise TooLowError
__main__.TooLowError

# 收入太低异常
class TooLowError(Exception):
  def __init__(self,msg):
    self.message = msg

  # 返回异常类对象的说明信息
  def __str___(self):
    return (self.message)


try:
  raise TooLowError('your Salary is too low')
except Exception as e:
  print(e)
  print('hahahaha')
your Salary is too low
hahahaha

  如果想自定义一个异常并且能抛出自己定义的异常描述也是可以实现的,在内部实现了 __init__() 方法和 __str__() 方法即可:

# 收入太低异常
class TooLowError(Exception):
  def __init__(self,msg):
    self.message = msg

  # 返回异常类对象的说明信息
  def __str___(self):
    return (self.message)


try:
  raise TooLowError('your Salary is too low')
except Exception as e:
  print(e)
  print('hahahaha')
your Salary is too low
hahahaha

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会

文章评论

    python自定义异常实现(BaseException与Exception差别)文章写得不错,值得赞赏

站点信息

  • 网站程序:Laravel
  • 客服微信:a772483200