python教程

当前位置:首页 > python进阶 > 当前文章

python进阶

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

2021-11-18 123赞 老董笔记

  为什么要自定义异常类

  在实际开发中,业务场景是千变万化的,某些时候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自定义异常实现(BaseException与Exception差别)文章写得不错,值得赞赏