首页 > 其他分享 >异常

异常

时间:2023-03-26 18:33:47浏览次数:24  
标签:__ raise self 异常 def speak

目录

异常

主动抛出异常

没有错误,执行代码,有错误,执行raise

sername = input('username:>>').strip()
password = input('password:>>').strip()

if username == 'kevin' and password == '123':
    pass
else:
    # print('用户名和密码错误')
    # 抛异常
    raise TypeError('用户名和密码错误')
'''
Traceback (most recent call last):
  File "E:\python project\day28\03 异常.py", line 11, in <module>
    raise TypeError('用户名和密码错误')
TypeError: 用户名和密码错误
'''

还记得之前学习的抽象类代码吗?

import abc
class Animal(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def speak(self):
        pass

抽象类可以使用主动抛出异常

'''父类限制子类的行为,源代码中会遇到'''
class Animal():
    def speak(self):
        raise Exception('必须实现speak方法')

class People(Animal):
    def speak(self):
        pass

obj1 = People()
obj1.speak()  # People类有这个方法,直接执行People类的方法

class Dog(Animal):
    def bar(self):
        pass

obj2 = Dog()
obj2.speak()  # Dog()类没有这个方法,就会去父类寻找这个方法,就会触发主动抛出异常

'''
Traceback (most recent call last):
  File "E:\python project\day28\03 异常.py", line 25, in speak
    raise Exception('必须实现speak方法')
Exception: 必须实现speak方法
'''

自定义异常类(了解)

在内置异常不够用的情况下,我们可以通过继承内置的异常类来自定义异常类

class MyException(BaseException):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg

raise MyException('用户名和密码错误')

'''
Traceback (most recent call last):
  File "E:\python project\day28\03 异常.py", line 56, in <module>
    raise MyException('用户名和密码错误')
__main__.MyException: 用户名和密码错误
'''

class PoolEmptyError(Exception): # 可以通过继承Exception来定义一个全新的异常
    def __init__(self,value='The proxy source is exhausted'): # 可以定制初始化方法
        super(PoolEmptyError,self).__init__()
        self.value=value

    def __str__(self): # 可以定义该方法用来定制触发异常时打印异常值的格式
        return '< %s >' %self.value


class NetworkIOError(IOError): # 也可以在特定异常的基础上扩展一个相关的异常
    pass


raise PoolEmptyError # __main__.PoolEmptyError: < The proxy source is exhausted >
raise NetworkIOError('连接被拒绝') # __main__.NetworkIOError: 连接被拒绝

断言

assert后面跟正确的条件
条件正确,下面的代码就能够运行,条件不正确,就会异常。使用时,

assert 1 == 1
print(123)  # 123

assert 1 == 1  # 条件错误,就会报错,下面的代码不会执行
print(123) 

具体使用:

d = {'username1':'kevin', 'age':20}
assert 'username' in d
print('21134243')

标签:__,raise,self,异常,def,speak
From: https://www.cnblogs.com/zjyao/p/17258913.html

相关文章

  • 异常
    一、什么是异常程序在运行过程当中发生的问题点击查看代码publicclassMain1{publicstaticvoidmain(String[]args){System.out.println("发生异常前");int......
  • openfeign 请求异常
    在OpenFeign中,如果发生请求异常,是不会走到Decoder的。Decoder主要是用于将HTTP响应体转换为Java对象的,只有在请求成功并且返回了正确的HTTP响应体时才会被调用......
  • Java【全局异常】无法捕获【环绕通知】
    ......
  • 网络异常与网络断开,发送AJAX处理
    <!DOCTYPEhtml><html> <head> <metacharset="utf-8"> <title></title> <styletype="text/css"> #result{ width:300px; height:100px; ......
  • .net core 自定义异常中间件
    前言在程序设计中,我们会遇到各种各样的异常问题,一个好的异常处理解决方案能够帮助开发者快速的定位问题,也能够给用户更好的用户体验。异常处理的几种方式1、通过异常过......
  • 异常
    一、异常体系介绍异常的最大一个类为java.lang.Throwable,其有两个子类,分别为Error和Exception。Error:代表的系统级别错误(属于严重问题)系统一旦出现问题,sun公司会把这些......
  • DolphinDB 流计算应用:引擎级联监测门禁异常状态
    物联网的发展为智能安防和自动化监控带来了更多便利,与此同时,新型城镇建设、智慧城市与智慧社区的发展也为门禁管理等安防问题智能化提出了更高的要求。在智能化发展的背景下......
  • SpringBoot中定义全局异常处理器
    场景SpringBoot中创建全局异常处理器,使发生异常时能处理。实现在项目下新建handler包,在包下新建GlobalExceptionHnadler.javapackagecom.example.demo.handler;importja......
  • sql预编译参数设置为null导致空指针异常
    编写的公共查询方法  在Dao层调用我们的公共查询方法并将params设置为了null  报错空指针异常  解决方法:将params设置为一个空的数组 ......
  • Laravel 异常错误信息处理
    手动抛出错误try{ $num1=3; if($num1==3){ thrownew\Exception("自定义错误"); }}catch(\Exception$exception){ info($exception->getMessage());}日......