python 自定义异常和主动抛出异常(raise)的操作

前言

有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出。注意,自定义异常只能由自己抛出。python解释器是不知道用户自定义异常是什么鬼的。

raise语句

主动抛出异常。

格式:

主动抛出异常终止程序

raise 异常名称(‘异常描述')

raise RuntimeError('testError')

主动抛出这个异常,并加以解释。

自定义异常

python的异常分为两种.

1、内建异常,就是python自己定义的异常。

2、不够用,用户自定义异常,

首先看看python的异常继承树

我们可以看到python的异常有个大基类。然后继承的是Exception。所以我们自定义类也必须继承Exception。

#最简单的自定义异常
class FError(Exception):
  pass

抛出异常、用try-except抛出

try:
  raise FError("自定义异常")
except FError as e:
  print(e)

在这里给一个简单的自定义异常类模版。

class CustomError(Exception):
  def __init__(self,ErrorInfo):
    super().__init__(self) #初始化父类
    self.errorinfo=ErrorInfo
  def __str__(self):
    return self.errorinfo

if __name__ == '__main__':
  try:
    raise CustomError('客户异常')
  except CustomError as e:
    print(e)

补充知识:Python自定义异常及常见异常类型

对于try…except…else…finally

def self_error(type_list):
 """异常处理函数
 传入一个可迭代对象,处理参数传入错误情况
 :paramtype_list:一个可迭代对象
 """
 try:
 for i in type_list:
  print(i)
 except:
 print("不是可迭代对象")
 else:
 print("没有发生错误")
 finally:
 print("程序运行结束")
self_error("abc")
"""
a
b
c
没有发生错误
程序运行结束"""
self_error(2)
"""不是可迭代对象
程序运行结束"""

由程序可以看出如果try部分顺利执行,则会执行else部分,如果try部分出现错误则会执行except部分,但是两种情况最后都输出了finally部分。当然,else和finally部分是可以省略的。我们可以自定义输出错误类型,需要用到raise函数。

def self_error(type_num):
  """异常处理函数

  自定义异常函数,用于抛出异常
  :paramtype_num:用于判断是否抛出异常的值
  :return 异常信息
  """
  if type_num<10:
   raise ValueError("取值小于10")
  else:
   return 200
 if __name__=="__main__":
 self_error(11) #200
 self_error(9) #ValueError: 取值小于10

raise抛出异常只适用于python的标准异常类

异常名称 描述

ArithmeticError 所有数值计算错误的基类

AssertionError 断言语句失败

AttributeError 对象没有这个属性

BaseException 所有异常的基类

DeprecationWarning 关于被弃用的特征的警告

EnvironmentError 操作系统错误的基类

EOFError 没有内建输入,到达EOF 标记

Exception 常规错误的基类

FloatingPointError 浮点计算错误

FutureWarning 关于构造将来语义会有改变的警告

GeneratorExit 生成器(generator)发生异常来通知退出

ImportError 导入模块/对象失败

IndentationError 缩进错误

IndexError 序列中没有没有此索引(index)

IOError 输入/输出操作失败

KeyboardInterrupt 用户中断执行(通常是输入^C)

KeyboardInterrupt 用户中断执行(通常是输入^C)

KeyError 映射中没有这个键

LookupError 无效数据查询的基类

MemoryError 内存溢出错误(对于Python 解释器不是致命的)

NameError 未声明/初始化对象 (没有属性)

NotImplementedError 尚未实现的方法

OSError 操作系统错误

OverflowError 数值运算超出最大限制

OverflowWarning 旧的关于自动提升为长整型(long)的警告

PendingDeprecationWarning 关于特性将会被废弃的警告

ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象

RuntimeError 一般的运行时错误

RuntimeWarning 可疑的运行时行为(runtime behavior)的警告

StandardError 所有的内建标准异常的基类

StopIteration 迭代器没有更多的值

SyntaxError Python 语法错误

SyntaxWarning 可疑的语法的警告

SystemError 一般的解释器系统错误

SystemExit 解释器请求退出

SystemExit Python 解释器请求退出

TabError Tab 和空格混用

TypeError 对类型无效的操作

UnboundLocalError 访问未初始化的本地变量

UnicodeDecodeError Unicode 解码时的错误

UnicodeEncodeError Unicode 编码时错误

UnicodeError Unicode 相关的错误

UnicodeTranslateError Unicode 转换时错误

UserWarning 用户代码生成的警告

ValueError 传入无效的参数

Warning 警告的基类

WindowsError 系统调用失败

ZeroDivisionError 除(或取模)零 (所有数据类型)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Python异常继承关系和自定义异常实现代码实例

    这篇文章主要介绍了Python异常继承关系和自定义异常实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 主要介绍 python 中异常的继承关系,及如何自定义异常 1. 异常的继承关系 BaseException # 所有异常的基类 +-- SystemExit # 解释器请求退出 +-- KeyboardInterrupt 用户中断执行(通常是输入^C) +-- GeneratorExit # 生成器(generator)发生异常来

  • python 自定义异常和异常捕捉的方法

    异常捕捉: try: XXXXX1 raise Exception("xxxxx2") except (Exception1,Exception2,--): xxxx3 else: xxxxx4 finally: xxxxxxx5 1.raise 语句可以自定义报错信息,如上. 2. raise后的语句是不会被执行了,因为已经抛出异常,控制流将会跳到异常捕捉模块. 3. except 语句可以一个except后带多个异常,也可以用多个语句捕捉多个异常,分别做不同处理. 4. excep

  • python异常触发及自定义异常类解析

    python程序运行中,可由程序抛出异常. 异常触发:使用raise命令抛出异常,即可使用异常基类Exception,也可使用自定义异常类(继承Exception类). class Point: def __init__(self, x, y): self.x = x self.y = y # Define a class to raise Line errors class LineError(Exception): #继承自基类Exception def __init__(self,Erro

  • Python自定义一个异常类的方法

    如何实现自定义一个异常 python内置了许多异常类,为编写代码划定红线,才使调试代码时能及时发现错误.那么我们编写一个模块也可以为使用此模块者划定红线,来约束使用者可用哪些数据,这就需要自定义异常类型. 首先需要了的是自定义类是的父类: python说明文档中是这样说 exception Exception: 所有内置的非系统退出类异常都派生自此类. 所有用户自定义异常也应当派生自此类. 那么就可以通过直接或间接的继承Exception就可以自定义一个异常类,当然也可以间接的继承python内

  • 详解python中自定义超时异常的几种方法

    最近在项目中调用第三方接口时候,经常会出现请求超时的情况,或者参数的问题导致调用异代码异常.针对超时异常,查询了python 相关文档,没有并发现完善的包来根据用户自定义的时间来抛出超时异常的模块.所以自己干脆自己来实现一个自定义的超时异常.目前找到了两种方式来实现超时异常的功能(signal.alarm().threading实现超时异常) 方法1 thread + time 原理:将要调用的功能函数放入子线程,通过设定子线程的阻塞时间,超时则主线程并不会等待子线程的执行.主线程退出,子线程就

  • 浅谈python抛出异常、自定义异常, 传递异常

    一. 抛出异常 Python用异常对象(exception object)表示异常情况,遇到错误后,会引发异常.如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行. raise 语句 Python中的raise 关键字用于引发一个异常,基本上和C#和Java中的throw关键字相同,如下所示: import traceback def throw_error(): raise Exception("抛出一个异常")#异常被抛出,print函数

  • python异常处理、自定义异常、断言原理与用法分析

    本文实例讲述了python异常处理.自定义异常.断言原理与用法.分享给大家供大家参考,具体如下: 什么是异常: 当程序遭遇某些非正常问题的时候就会抛出异常:比如int()只能处理能转化成int的对象,如果传入一个不能转化的对象就会报错并抛出异常 常用的异常有: ValueError :传入无效的错误的参数 TypeError:进行了对类型无效的操作 IndexError:序列中没有此索引 NameError:使用未定义的变量 更多更具体的异常可以参考Python官方文档,读读官方文档更健康 异常

  • python 自定义异常和主动抛出异常(raise)的操作

    前言 有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出.注意,自定义异常只能由自己抛出.python解释器是不知道用户自定义异常是什么鬼的. raise语句 主动抛出异常. 格式: 主动抛出异常终止程序 raise 异常名称('异常描述') raise RuntimeError('testError') 主动抛出这个异常,并加以解释. 自定义异常 python的异常分为两种. 1.内建异常,就是python自己定义的异常. 2.不够用,用户自定义异常

  • Python 异常的捕获、异常的传递与主动抛出异常操作示例

    本文实例讲述了Python 异常的捕获.异常的传递与主动抛出异常操作.分享给大家供大家参考,具体如下: 异常的捕获 demo.py(异常的捕获): try: # 提示用户输入一个整数 num = int(input("输入一个整数:")) # 使用 8 除以用户输入的整数并且输出 result = 8 / num print(result) except ValueError: print("请输入正确的整数") except Exception as result

  • flask中主动抛出异常及统一异常处理代码示例

    本文主要介绍的是flask中主动抛出异常及统一异常处理的相关内容,具体如下. 在开发时,后台出现异常 ,但不想把异常显示给用户或者要统一处理异常时,可以使用abort主动抛出异常,再捕获异常返回美化后的页面. 主动抛出异常: @user.route('/testError') def testError(): print ('testError') abort(404) 使用装饰器errorhandler捕获异常: @user.errorhandler(404) def error(e): re

  • Python实现对PPT文件进行截图操作的方法

    本文实例讲述了Python实现对PPT文件进行截图操作的方法.分享给大家供大家参考.具体分析如下: 下面的代码可以为powerpoint文件ppt进行截图,可以指定要截取的幻灯片页面,需要本机安装了powerpoint,可以指定截图的大小分辨率 import os import comtypes.client def export_presentation(path_to_ppt, path_to_folder): if not (os.path.isfile(path_to_ppt) and

  • python自定义异常实例详解

    python自定义异常实例详解 本文通过两种方法对Python 自定义异常进行讲解,第一种:创建一个新的exception类来拥有自己的异常,第二种:raise 唯一的一个参数指定了要被抛出的异常 1.可以通过创建一个新的exception类来拥有自己的异常.异常应该继承自 Exception 类,或者直接继承,或者间接继承. >>>raiseNameError('HiThere') Traceback(most recent call last): File"<pysh

  • python多进程(加入进程池)操作常见案例

    本文实例讲述了python多进程(加入进程池)操作.分享给大家供大家参考,具体如下: 一.多进程复制多个文件 import multiprocessing import os import time # 复制文件,传入文件名 def copy_file(old_file_name, old_name): new_file_name = 'new_file' new_name = old_name if not os.path.exists(new_file_name): os.makedirs(

  • python实现的MySQL增删改查操作实例小结

    本文实例总结了python实现的MySQL增删改查操作.分享给大家供大家参考,具体如下: 代码片段一 连接并执行sql #encoding:UTF-8 import MySQLdb conn = MySQLdb.Connect( host = '127.0.0.1', port = 3306, user = 'root', passwd='123456', db='imooc', charset='utf8' ) cursor = conn.cursor() print conn print c

  • Python抛出引发异常(raise)知识点总结

    Python中try块可以捕获测试代码块中的错误.except块可以处理错误.finally块可以执行代码,而不管try-和except块的结果如何.本文主要介绍Python 抛出引发异常(raise). Python 常用术语 抛出引发异常(raise) 作为Python开发人员,可以在某些情况下引发异常. 要抛出(或引发)异常,请使用raise关键字. 例如: 当x小于0时,抛出异常并停止程序: x = -1 if x < 0: raise Exception("x需要是大于等于0的数

  • Python如何利用xlrd和xlwt模块操作Excel表格

    目录 简介: 安装: 初始数据: xlrd使用: xlwt使用: xlwt使用示例2: 总结 简介: xlrd和xlwt是python的第三方库,xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入. 安装: pip install xlrd pip install xlwt 初始数据: excelLearn.xls 个人信息表: 姓名 年龄 地址 Tom 26 CN Jo 27 UK Lily 28 US Kim 29 JP 班级成绩表: 考试日期 班级 分数 20

随机推荐