Python用户自定义异常的实现

实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时候你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception 类,可以直接继承,或者间接继承。

常见的内置异常有:

1.自定义异常类型

#1.用户自定义异常类型,只要该类继承了Exception类即可,至于类的主题内容用户自定义,可参考官方异常类
class TooLongExceptin(Exception):
  "this is user's Exception for check the length of name "
  def __init__(self,leng):
    self.leng = leng
  def __str__(self):
    print("姓名长度是"+str(self.leng)+",超过长度了")

2.如何手动抛出异常:raise

系统的自带的异常只要触发会自动抛出,比如NameError,但用户自定义的异常需要用户自己决定什么时候抛出。
raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。大多数的异常的名字都以"Error"结尾,所以实际命名时尽量跟标准的异常命名一样。

#1.用户自定义异常类型
class TooLongExceptin(Exception):
  "this is user's Exception for check the length of name "
  def __init__(self,leng):
    self.leng = leng
  def __str__(self):
    print("姓名长度是"+str(self.leng)+",超过长度了")

#2.手动抛出用户自定义类型异常
def name_Test():
    name = input("enter your naem:")
    if len(name)>4:
      raise TooLongExceptin(len(name)) #抛出异常很简单,使用raise即可,但是没有处理,即捕捉
    else :
      print(name)

#调用函数,执行
name_Test()
-----------------执行时满足条件后抛出一个用户定义的异常如下:--------------------------------------
enter your naem:是打发斯蒂芬
Traceback (most recent call last):
姓名长度是6,超过长度了
 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 21, in <module>
  name_Test()
__main__.TooLongExceptin: <exception str() failed>

3.捕捉用户手动抛出的异常

#1.捕捉用户手动抛出的异常,跟捕捉系统异常方式一样
def name_Test():
  try:
    name = input("enter your naem:")
    if len(name)>4:
      raise TooLongExceptin(len(name))
    else :
      print(name)

  except TooLongExceptin,e_result: #这里异常类型是用户自定义的
    print("捕捉到异常了")
    print("打印异常信息:",e_result)

#调用函数,执行
name_Test()
==========执行结果如下:==================================================
enter your naem:aaafsdf
捕捉到异常了
Traceback (most recent call last):
打印异常信息: 姓名长度是7,超过长度了
姓名长度是7,超过长度了
 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 16, in name_Test
  raise TooLongExceptin(len(name))
__main__.TooLongExceptin: <exception str() failed>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 26, in <module>
  name_Test()
 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 22, in name_Test
  print("打印异常信息:",e_result)
TypeError: __str__ returned non-string (type NoneType)

到此这篇关于Python用户自定义异常的实现的文章就介绍到这了,更多相关Python 自定义异常内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

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

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

  • 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类来拥有自己的异常,第二种:raise 唯一的一个参数指定了要被抛出的异常 1.可以通过创建一个新的exception类来拥有自己的异常.异常应该继承自 Exception 类,或者直接继承,或者间接继承. >>>raiseNameError('HiThere') Traceback(most recent call last): File"<pysh

  • 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程序中自定义异常的方法

    通过创建一个新的异常类,程序可以命名它们自己的异常.异常应该是典型的继承自Exception类,通过直接或间接的方式. 以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息. 在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例. class Networkerror(RuntimeError): def __init__(self, arg): self.arg

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

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

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

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

  • Python用户自定义异常的实现

    实际开发中,有时候系统提供的异常类型不能满足开发的需求.这时候你可以通过创建一个新的异常类来拥有自己的异常.异常类继承自 Exception 类,可以直接继承,或者间接继承. 常见的内置异常有: 1.自定义异常类型 #1.用户自定义异常类型,只要该类继承了Exception类即可,至于类的主题内容用户自定义,可参考官方异常类 class TooLongExceptin(Exception): "this is user's Exception for check the length of na

  • python用户自定义异常的实例讲解

    说明 1.程序可以通过创建一个新的异常类来命名它们自己的异常.异常应该是典型的继承自Exception类,直接或间接的方式. 2.异常python有一个大基类,继承了Exception.因此,我们的定制类也必须继承Exception. 实例 class ShortInputException(Exception): def __init__(self, length, atleast): self.length = length self.atleast = atleast def main()

  • Python实现自定义异常实例

    目录 前言 1.使用 raise 语句来抛出异常 2.自定义异常类 总结 前言 在Python中,抛出自定义异常的语法为 raise 异常类对象.也就是说可以使用 raise 语句来抛出异常, raise语句后需要跟一个异常类或异常类的实例. 1.使用 raise 语句来抛出异常 需求:定义一个求和方法 (1)抛出异常类 def add(a, b): # 如果a和b中有负数,就向调用处抛出异常 if a < 0 or b < 0: # raise用于向外部抛出异常,后边可以跟一个异常类,或异常

  • Python用户推荐系统曼哈顿算法实现完整代码

    出租车几何或曼哈顿距离(Manhattan Distance)是由十九世纪的赫尔曼·闵可夫斯基所创词汇 ,是种使用在几何度量空间的几何学用语,用以标明两个点在标准坐标系上的绝对轴距总和. 图中红线代表曼哈顿距离,绿色代表欧氏距离,也就是直线距离,而蓝色和黄色代表等价的曼哈顿距离.曼哈顿距离--两点在南北方向上的距离加上在东西方向上的距离,即d(i,j)=|xi-xj|+|yi-yj|.对于一个具有正南正北.正东正西方向规则布局的城镇街道,从一点到达另一点的距离正是在南北方向上旅行的距离加上在东西

  • python用户管理系统的实例讲解

    学Python这么久了,第一次写一个这么多的代码(我承认只有300多行,重复的代码挺多的,我承认我确实垃圾),但是也挺不容易的 自定义函数+装饰器,每一个模块写的一个函数 很多地方能用装饰器(逻辑跟不上,有的地方没用),包括双层装饰器(不会),很多地方需要优化,重复代码太多 我还是把我的流程图拿出来吧,虽然看着比上次的垃圾,但是我也做了一个小时,不容易! 好像是挺丑的(表示不会画,但我下次一定努力) 用户文件: 文件名为:user.txt 1代表管理员用户 2代表普通用户 smelond|adm

  • python用户管理系统

    本文实例为大家分享了Python用户管理系统的具体代码,供大家参考,具体内容如下 用户管理系统 1.注册新用户 如果注册用户已经存在,则报错 需要填写信息: name, passwd, gender, email,age 2.用户登录 要求同之前写的用户登录系统 3.注销用户 用户注销时,需要输入用户名和正确的用户密码 4.显示用户信息 显示系统中存在所有已经注册用户的信息 5.退出系统 代码如下 #!/usr/bin/env python #coding:utf-8 info = ""

  • 详解Python用户登录接口的方法

    Readme: blog address: 摘要:编写登录接口 输入用户名.密码 认证成功后显示欢迎信息 输错3次后锁定 关键词:循环:判断:外部数据读写:列表:字典: 展望:可以结合数据库读写. codes: # Author: Steven Zeng ''' 作业2:编写登录接口 输入用户名密码 认证成功后显示欢迎信息 输错3次后锁定 ''' print("welcome to here") f1=open('username.txt') f2=open('password.txt

  • Oracle用户自定义异常实现过程解析

    注意:普通的查询语句不会出现异常,只有使用into对变量进行赋值的时候才会发生异常 --系统变量: notfound --> if sql%notfund then 如果这个表达式为真,则 (增删改)出错 --,先自定义一个异常:no_result exception -- if sql%nofund then --excetpion --when no_result then --dbms-- 用户自定义异常写在:declare里,如: set serveroutput on declare

  • 如何用C#创建用户自定义异常浅析

    概述 异常是在程序执行期间出现的问题.C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零.异常提供了一种把程序控制权从某个部分转移到另一个部分的方式.C# 异常处理时建立在四个关键词之上的:try.catch.finally和throw. try:一个 try 块标识了一个将被激活的特定的异常的代码块.后跟一个或多个 catch 块.catch:程序通过异常处理程序捕获异常.catch 关键字表示异常的捕获.finally:finally 块用于执行给定的语句,不管异常是否被抛

  • Python实现自定义异常堆栈信息的示例代码

    当我们的程序报错时,解释器会将整个异常的堆栈信息全部输出出来,举个例子: def foo():     raise RuntimeError("抛一个异常") def bar():     foo() def main():     bar() main() 如果执行这段代码,会得到以下报错信息: 解释器会将异常产生的整个调用链都给打印出来,那么问题来了,我们能不能自定义这些报错信息呢? 答案是可以的,我们只要拿到这些报错信息,然后再进行修改即可.那么如何才能拿到呢?显然需要借助于 t

随机推荐