首页 > 其他分享 >2.1 - 错误、异常和警告

2.1 - 错误、异常和警告

时间:2024-01-19 19:00:49浏览次数:25  
标签:__ return 错误 except print 2.1 异常 警告

2.1.1 分类

  语法错误:又称为 解析错误,写出了不符合python语法格式的代码会报:SyntaxError: invalid syntax。

  警告:警告消息通常用于提示用户一些错误或者过时的用法,当这些情况发生时我们不希望抛出异常或者直接退出程序。警告消息通常写入 sys.stderr,对警告的处理方式可以灵活的更改。

  异常:包含 TypeError、ZeroDivisionError、MemoryError等内置异常 和 自定义异常等。

2.1.2 异常的语法

# try - except - else

try:
    i = 1 / 0
except TypeError:
    raise RuntimeError('捕获到一个类型异常') 
except:
    raise RuntimeError('捕获到一个异常')
else:
    print('这段代码没有异常被捕获')

  else分支的触发条件:如果try中没发生异常即:没有任何except发生过,则执行此else分支。

  except:如果except中没有指定异常类型,则会捕获所有类型的异常; 如果except指定了异常类型,则只能捕获指定类型的异常;如果要捕获多个类型的异常,则可以使用 元组 ;如果一个异常没有  与任何的except匹配,则会报错

  raise:主动抛出异常

 

class A(object):

    def test(self, x):
        try:
            res = 1 / x
            return -1
        except:
            print('发生了一个异常')
        finally:
            print('fianlly 分支执行了')
            return -2


a = A()
a.test(1)
print('---------------')
print(a.test(0))

  finally子句:在【调用return结束之前】必须先执行finally分支;如果 finally子句中包含一个return语句,则最终返回值将来自finally子句中return的返回值,而非try子句中的return返回值。

 

2.1.3 断言

  assert断言:类似于条件判断语句,不符合条件返回断言异常AssertionError。

2.1.4 自定义异常的两种方式

# 自定义异常方式一:重写 __init__ 和 __str__ 魔术方法
class MyError:
    def __init__(self, message=''):
        self.message = message

    def __str__(self):
        return str(self.message)


# 自定义异常方式二:直接继承 Exception 类
class MyError2(Exception):
    pass


print(MyError("发生了一个异常"))
print(MyError2("发生了一个异常"))

 

 

 

  

标签:__,return,错误,except,print,2.1,异常,警告
From: https://www.cnblogs.com/zhangzhenw/p/17975277

相关文章

  • Rust 错误处理
    目录用panic!处理不可恢复的错误对应panic时的栈展开或终止使用panic!的backtraceWindows设置RUST_BACKTRACE环境变量的两种方式用Result处理可恢复的错误匹配不同的错误不同于使用match和Result<T,E>失败时panic的简写:unwrap和expect传播错误传播错误的简写:?......
  • P2580 于是他错误的点名开始了题解
    “普及/提高-”这个难度很有意思。说明这题可能需要用到提高组当中比较基础的内容。它的名字叫做map。map,其实相当于一个超大数组,但它真实的作用是:映射。比如a[7]=5;就是用a数组把7和5关联了起来,这个操作就叫映射。map这东西NB的地方在于,它能这么写:score["Leo201......
  • 开发遇到的问题总结---mysql建表报SQL 错误 [1067] [42000]: Invalid default value f
    报错内容:SQL错误[1067][42000]:Invaliddefaultvaluefor'begin_time'sql语句:CREATETABLE`tb_seckill_voucher`(`voucher_id`bigint(20)UNSIGNEDNOTNULLCOMMENT'关联的优惠券的id',`stock`int(8)NOTNULLCOMMENT'库存',`creat......
  • spring boot 3.2.1 dremio jdbc jprofiler 集成
    jprofiler可以直接与idea集成,对于分析一些实际需要debug但是不好复现的问题还是比较方便的,以下是一个简单的与dremio集成的,springboot使用了3.2(jdk需要17)同时也会包含一些启动说明安装idea插件直接plugins的市场中搜索安装就可以了,之后就是配置了idea启动配置因......
  • 每个Go程序员必犯之错之切片循环错误
    每个Go程序员必犯之错原创 晁岳攀(鸟窝) 鸟窝聊技术 2023-12-1808:48 发表于北京 听全文说起每个程序员必犯的错误,那还得是"循环变量"这个错误了,就连Go的开发者都犯过这个错误,这个错误在Go的FAQ中也有提到Whathappenswithclosuresrunningasgoroutines?[......
  • 【Azure Function】在Function执行中遇见Timeout错误
    问题描述在Function执行中遇见Timeout错误: Microsoft.Azure.WebJobs.Host.FunctionTimeoutException/Timeoutvalueof00:30:00wasexceededbyfunction/Functions.TimerTrigger_UdeskContact    asyncMicrosoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryHandl......
  • 【Azure Function】在Function执行中遇见Timeout错误
    问题描述在Function执行中遇见Timeout错误: Microsoft.Azure.WebJobs.Host.FunctionTimeoutException/Timeoutvalueof00:30:00wasexceededbyfunction/Functions.TimerTrigger_UdeskContact    asyncMicrosoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryHa......
  • 【随笔】oier错误合集
    (转发一下我在某网站写的博客)养成良好的代码习惯,从我做起。闲来无事,开个新坑。点个赞吧亲~也算是在我退役之前留下一些对后人有意义的东西了。本博客记载一些比较通用的容易写挂的屑细节。编译选项加-fsanitize=undefined-Wextra-Wall有效避免大部分错误。TLE多组数据不......
  • vue+tsc+noEmit导致打包报TS类型错误问题及解决方法
    当我们新建vue3项目,package.json文件会自动给我添加一些配置选项,这写选项基本没有问题,但是在实际操作过程中,当项目越来越复杂就会出现问题。本文列举一个目前我遇到的一个问题:打包后报了一堆TS类型错误,怎么消除这些错误?项目环境:Vue3+Vite+TS当项目进行打包时候,突然发现终端......
  • C# 错误 CS0234: 命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop
      错误CS0234:命名空间“Microsoft.Office”中不存在类型或命名空间名称“Interop”(是缺少程序集引用吗?) 解决办法是 添加应用,com, 找到MicrosoftExcel11.0objectlibrary    一、“视图”----->“解决方案资源管理器”二、“引用”三、右键点......