首页 > 编程语言 >python 异常总结:raise except

python 异常总结:raise except

时间:2022-10-13 16:22:45浏览次数:45  
标签:__ Exception raise python self except print

raise 语句是用来 主动 抛出一个指定的异常。

raise语法格式:raise [Exception [, args [, traceback]]]

raise 主动抛出异常种类总结:

  1. except 有 匹配的error 类型
  2. except 无 匹配的error 类型
  3. 自定义error
  4. 未捕获异常,程序报错
# ####################################
# 主动抛出异常,except 进行异常匹配
try:
  raise Exception('错误了。。。')
except Exception as e:
  print(e)

# ####################################
# 按照顺序检查except,先匹配那个就先用哪个
try:
  raise IndexError('错误了。。。')
except ValueError:
  print("ValueError")
except Exception as e:
  print(e)

# ####################################
# 按照顺序检查except,先匹配那个就先用哪个
try:
    a=2
    if a > 1:
        raise ValueError('值大于1')
except ZeroDivisionError:
    print("ZeroDivisionError")
except ValueError:
  print("ValueError")
except Exception:
    print("Exception")

# ####################################
# 自定义error 需继承自 Exception 类,可以直接继承,或者间接继承
class WupeiqiException(Exception):
      
  def __init__(self, msg):
    self.message = msg
  
  def __str__(self):
    return self.message
  
try:
  raise WupeiqiException('我的异常')
except WupeiqiException as e:
  print(e)

class MyError(Exception):
        def __init__(self, value):
            self.value = value
        def __str__(self):
            return repr(self.value)
try:
    raise MyError(2*2)
except MyError as e:
    print('exception:', type(e))
    print('My exception occurred, value:', type(e.value))

# ####################################
# 抛出的异常与except不匹配,报错
try:
    x = 10
    if x > 5:
        raise Exception('x 不能大于 5。x 的值为: {}'.format(x))
except ZeroDivisionError:
    print("Exception")

# 有异常,报错
x = 10
if x > 5:
    raise Exception('x 不能大于 5。x 的值为: {}'.format(x))

 

标签:__,Exception,raise,python,self,except,print
From: https://www.cnblogs.com/songshutai/p/16788533.html

相关文章

  • Python 学习笔记
    代码编写过程中的需要注意事项1.PEP是PythonEnhancementProposal的缩写,通常翻译为“Python增强提案”2.类总是使用驼峰格式命名,即所有单词首字母大写其余字母小写,类......
  • Python基础四【字符串】
    1#双引号:使用双引号的一个好处,就是字符串中可以使用单引号字符。2#“转义字符”让你输入一些字符,它们用其他方式是不可能放在字符串里的。转义字符包含一个倒斜杠(\),......
  • virtualenv--python沙盒环境安装
    有人说:virtualenv、fabric和pip是pythoneer的三大神器,今天学习安装下virtualenvvirtualenv可以搭建虚拟且独立的python环境,可以使每个项目环境与其他项目独立开来,保持......
  • Python解析Xml
    Python解析Xmlfromlxmlimportetreedefget_info_from_xml(xml_text):try:parser=etree.XMLParser(recover=True)tree=etree.fromstring(......
  • Windows下python组件hyperscan的编译与安装
    什么是Hyperscan:hyperscan是英特尔推出的一款高性能正则表达式引擎,一次接口调用可以实现多条规则与多个对象之间的匹配,可以支持多种匹配模式,块模式和流模式,它是以PCRE为原......
  • Python周期任务神器之Schedule模块使用详解
    Python中schedule模块关于定时任务使用方法_python_脚本之家(jb51.net)Python中schedule模块定时任务的使用方法(2)_python_脚本之家(jb51.net)......
  • Python进阶:如何将字符串常量转化为变量?
     前几天,我们​​Python猫交流学习群​​里的M同学提了个问题。这个问题挺有意思,经初次讨论,我们认为它无解。然而,我认为它很有价值,应该继续思考怎么解决,所以就在私密的知......
  • Python与家国天下
     导读:Python猫是一只喵星来客,它爱地球的一切,特别爱优雅而无所不能的Python。我是它的人类朋友豌豆花下猫,被授权润色与发表它的文章。如果你是第一次看到这个系列文章,那我......
  • Python多进程——进程池的开启和多进程操作同一个List
    ​为什么要使用多进程目标网站数据量多,想赶时间多获取点东西?数据库大批量的数据需要操作?单纯的想要节省时间,早早下班?............肯定会有人说【多线程】。Python的多线程为......
  • Python 为什么不支持 switch 语句?
    本文出自“Python为什么”系列,请查看​​全部文章​​在这篇文章里,我们会聊一聊为什么Python决定不支持switch语句。为什么想要聊这个话题呢?主要是因为switch在其它语......