Python实现自定义异常实例

目录
  • 前言
  • 1、使用 raise 语句来抛出异常
  • 2、自定义异常类
  • 总结

前言

在Python中,抛出自定义异常的语法为 raise 异常类对象。也就是说可以使用 raise 语句来抛出异常, raise语句后需要跟一个异常类或异常类的实例。

1、使用 raise 语句来抛出异常

需求:定义一个求和方法

(1)抛出异常类

def add(a, b):
    # 如果a和b中有负数,就向调用处抛出异常
    if a < 0 or b < 0:
        # raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例
        # 此时返回一个异常类
        raise Exception
    # 正常计算并返回结果
    r = a + b
    return r

print(add(-123, 456))

结果如下图:可以看到没有异常描述信息

(2)抛出异常类的实例

def add(a, b):
    # 如果a和b中有负数,就向调用处抛出异常
    if a < 0 or b < 0:
        # raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例
        # 此时返回一个异常类的实例
        raise Exception("传入的参数不能有负数。")
    # 正常计算并返回结果
    r = a + b
    return r

print(add(-123, 456))

结果如下图:

2、自定义异常类

自定义异常类,只需要创建一个类继承Exception即可。

(1)简单实现

# 自定义异常类,只需要创建一个类继承Exception即可
# 自定义异常类完全不用写任何内容
class MyError(Exception):
    pass

def add(a, b):
    # 如果a和b中有负数,就向调用处抛出异常
    if a < 0 or b < 0:
        # raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例
        # 此时返回一个异常类的实例
        raise MyError("传入的参数不能有负数。自定义的,这样也行!")
    # 正常计算并返回结果
    r = a + b
    return r

print(add(-123, 456))

结果如下图:

(2)完整实现

需求:密码长度不足,则报异常(用户输入密码,如果输入的长度不足3位,则报错,即抛出自定义异常,并捕获该异常)。

# 自定义异常类,继承Exception
class ShortInputError(Exception):
    def __init__(self, length, min_len):
        # 用户输入的密码长度
        self.length = length
        # 系统要求的最少长度
        self.min_len = min_len

    # 设置抛出异常的描述信息
    def __str__(self):
        return f'你输入的长度是{self.length}, 不能少于{self.min_len}个字符'

def main():
    # 2. 抛出异常: 尝试执行:用户输入密码,如果长度小于3,抛出异常
    try:
        con = input('请输入密码:')
        if len(con) < 3:
            # 抛出异常类创建的对象
            raise ShortInputError(len(con), 3)
    # 3. 捕获该异常
    except Exception as result:
        print(result)
    else:
        print('密码已经输入完成')

main()

总结

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

(0)

相关推荐

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

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

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

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

  • python自定义异常实例详解

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

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

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

  • 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装饰器实例大详解

    一.作用域 在python中,作用域分为两种:全局作用域和局部作用域. 全局作用域是定义在文件级别的变量,函数名.而局部作用域,则是定义函数内部. 关于作用域,我们要理解两点: a.在全局不能访问到局部定义的变量 b.在局部能够访问到全局定义的变量,但是不能修改全局定义的变量(当然有方法可以修改) 下面我们来看看下面实例: x = 1 def funx(): x = 10 print(x) # 打印出10 funx() print(x) # 打印出1 如果局部没有定义变量x,那么函数内部会从内往

  • Python 调用Java实例详解

    Python 调用Java实例详解 前言: Python 对服务器端编程不如Java 所以这方面可能要调用Java代码 前提: Linux 环境  1 安装 jpype1 安装后测试代码: from jpype import * startJVM(getDefaultJVMPath(), "-ea") java.lang.System.out.println("Hello World") shutdownJVM() 2 调用非jdk的jar包, test.jar 包

  • python 系统调用的实例详解

    python 系统调用的实例详解               本文将通过两种方法对python 系统调用进行讲解,包括python使用CreateProcess函数运行其他程序和ctypes模块的实例, 一 python使用CreateProcess函数运行其他程序 >>> import win32process >>> handle = win32process.CreateProcess('c:\\windows\\notepad.exe','',None,None

  • python中类和实例如何绑定属性与方法示例详解

    前言 python类与实例的方法的调用中觉得云里雾里,思考之后将自己的想法记录下,一来加深自己理解,巩固自己记忆,而来帮助一些想要学习python的朋友理解这门抽象的语言,由于Python是动态语言,类以及根据类创建的实例可以任意绑定属性以及方法,下面分别介绍. 1.类绑定属性 类绑定属性可以直接在class中定义属性,这种属性是类属. class Student(object): name = 'Student' 这个属性虽然归类所有,但类的所有实例都可以访问到. class Student(

  • Python 实现链表实例代码

    Python 实现链表实例代码 前言 算法和数据结构是一个亘古不变的话题,作为一个程序员,掌握常用的数据结构实现是非常非常的有必要的. 实现清单 实现链表,本质上和语言是无关的.但是灵活度却和实现它的语言密切相关.今天用Python来实现一下,包含如下操作: ['addNode(self, data)'] ['append(self, value)'] ['prepend(self, value)'] ['insert(self, index, value)'] ['delNode(self,

  • Python 加密的实例详解

     Python 加密的实例详解 hashlib支持md5,sha1,sha256,sha384,sha512,用法和md5一样 import hashlib #hashlib支持md5,sha1,sha256,sha384,sha512,用法和md5一样 m = hashlib.md5() #创建加密对象 m.update(b'password') #对输入内容进行加密, m.digest() #获取二进制加密密文 m.hexdigest() #获取十六进制加密密文 '''''python3默认

随机推荐