Python笔记(3)异常处理

Yolov5实现道路裂缝检测 Yolov5实现道路裂缝检测 参考代码链接 Github代码链接 基于Pytorch的Yolov5道路裂缝检测程序运行说明。大家可以结合我的说明和原文说明使用,有问题欢迎询问。 文章目录Yolov5实现道路裂缝检测环境要求测试训练自己的数据集1.创建dataset.yaml文件2.创建标签文件3.组织文件路径4.选择模型5.开始训练 环境要求 Python 3.8或之后的版本 还要安装requirements.txt文件中所有依赖包,包括1.7及以上版本的torch $ pip install -r req 阅读详情

Exception(异常)

当遇到异常的条件时,Python使用exception对象来描述。当遭遇一个错误的时候,程序就抛出一个异常,如果没有来处理此类异常的策略的话,程序将会以一个traceback的方式终止,代码如下:

>>> 1/0 
Traceback (most recent call last): 
File "<stdin>", line 1, in ? 
ZeroDivisionError: integer division or modulo by zero

每个异常都是一个类的实例(上例中是ZeroDivisionError),有许多方法来抛出和捕捉异常,最好要处理这些异常,而不是让程序崩溃。

抛出异常

>>> raise Exception 
Traceback (most recent call last): 
File "<stdin>", line 1, in ? 
Exception 
>>> raise Exception('hyperdrive overload') 
Traceback (most recent call last): 
File "<stdin>", line 1, in ? 
Exception: hyperdrive overload

列出所有的Python自带的异常类型

>>> import exceptions 
>>> dir(exceptions) 
['ArithmeticError', 'AssertionError', 'AttributeError', ...]

这些异常都可以用raise语句抛出

>>> raise ArithmeticError 
Traceback (most recent call last): 
File "<stdin>", line 1, in ? 
ArithmeticError

Class NameDescription
ExceptionThe base class for all exceptions 
AttributeError Raised when attribute reference or assignment fails 
IOError   Raised when trying to open a nonexistent file (among other things) 
IndexError Raised when using a nonexistent index on a sequence 
KeyError Raised when using a nonexistent key on a mapping 
NameError    Raised when a name (variable) is not found
SyntaxError Raised when the code is ill-formed 
TypeError  Raised when a built-in operation or function is applied to an object of the  wrong type 
ValueError   Raised when a built-in operation or function is applied to an object with  the correct type, but with an inappropriate value 
ZeroDivisionError Raised when the second argument of a division or modulo operation is zero

定义自己的异常类

class SomeCustomException(Exception): pass

捕获异常

try: 
    x = input('Enter the first number: ') 
    y = input('Enter the second number: ') 
    print x/y 
except ZeroDivisionError: 
    print "The second number can't be zero!"

在函数中抛出的异常,可以传递到调用它的地方之外,如果函数不能捕获异常,那么这个异常则会像冒泡一样,一直传递到程序的顶端,这意味着,try/catch语句可以处理其他函数的异常。

如果一个异常,无法处理,可以利用raise语句继续将它抛出交给其他的地方来捕获。如下代码:

class MuffledCalculator: 
    muffled = False 
    def calc(self, expr): 
        try: 
            return eval(expr) 
            except ZeroDivisionError: 
            if self.muffled: 
            print 'Division by zero is illegal' 
        else: 
            raise

全部的当muffled值为True和false的代码如下:
class MuffledCalculator: 
    muffled = False 
    def calc(self, expr): 
        try: 
        return eval(expr) 
    except ZeroDivisionError: 
        if self.muffled: 
        print 'Division by zero is illegal' 
        else: 
            raise

捕获多个异常
try: 
    x = input('Enter the first number: ') 
    y = input('Enter the second number: ') 
    print x/y 
except ZeroDivisionError: 
    print "The second number can't be zero!" 
except TypeError: 
    print "That wasn't a number, was it?"

如果对多个异常有相同的处理方法,可以把多个异常整合到一个代码块中,而异常则都放在一个tuple中:
try: 
    x = input('Enter the first number: ') 
    y = input('Enter the second number: ') 
    print x/y 
except (ZeroDivisionError, TypeError, NameError): 
    print 'Your numbers were bogus...'

如果你想在except语句中访问异常对象,只需要将参数改变成两个就可以了,如下。当你想在捕获多个异常的时候,不影响系统,而又想将错误记录在log文件的话,这个方法很有用。
try: 
    x = input('Enter the first number: ') 
    y = input('Enter the second number: ') 
    print x/y 
except (ZeroDivisionError, TypeError), e: 
    print e

注意, Python 3.0中,要写成这个样子
except  (ZeroDivisionError, TypeError) as e.

如果你想要捕获所有的错误,那么你可以这样写:
ry: 
    x = input('Enter the first number: ') 
    y = input('Enter the second number: ') 
    print x/y 
except: 
    print 'Something wrong happened...'

但是这样做风险很大,因为它会忽略一切异常,比如Control+C的手动结束,sys.exit(),等等。所以,做好将它写成如下的形式:

except Exception, e 

然后对e进行某些检测。


某些情况下,如下代码可以让程序一直正确运行,直到碰到异常

try: 
    print 'A simple task' 
except: 
    print 'What? Something went wrong?' 
else: 
    print 'Ah... It went as planned.'

如下的代码表示,只有没有异常的情况下程序才会结束,如果有异常,则输出是什么异常

while True: 
    try: 
        x = input('Enter the first number: ') 
        y = input('Enter the second number: ') 
        value = x/y 
        print 'x/y is', value 
    except Exception, e: 
        print 'Invalid input:', e 
        print 'Please try again' 
    else: 
        break

finally语句
finally语句在发生异常的时候才执行,一半是用来处理后事的^ ^
x = None 
try: 
     x = 1/0 
finally: 
    print 'Cleaning up...' 
    del x

finally语句中的东西在程序崩溃前执行

你也可以将这四个东西放在同一个语句快中

try: 
    1/0 
except NameError: 
    print "Unknown variable" 
else: 
    print "That went well!" 
finally: 
    print "Cleaning up."







Kali Linux渗透测试:蚁剑(AntSword)三种安装方法与避坑指南 WebShell管理是渗透测试与网络安全攻防演练中的关键技术环节,它允许安全人员在获得初步访问权限后,对目标系统进行文件管理、命令执行和数据库操作等深度控制。其核心原理是通过在Web服务器上植入特定脚本,建立一条隐蔽的远程管理通道。在实战中,一个高效、稳定的WebShell管理工具能极大提升后渗透阶段的工作效率与成功率。蚁剑(AntSword)作为一款功能强大的国产开源工具,凭借其插件化架构和图形化界面,成为众多安全研究人员的首选。本文将聚焦于如何在渗透测试专用操作系统Kali Linux上部署蚁剑,详细对 阅读详情

相关推荐

03 Aras Innovator二次开发-服务端方法(二)

Aras Innovator二次开发-服务端方法书写

企业信息化(PLM,ERP.MES) 2016

python如何检测和处理异常_Python中的异常处理

Python 2.4.4 (#2, Apr 5 2007, 20:11:18)[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>> import exceptions>>> prin...

weixin_39559369的博客 160

抖音自定义卡片链接(图文链接)

抖音自定义可以自定义标题,打开链接,和展示图片 效果 主要代码 public void sendMessage(String conversationId, Object aBaseContent) throws Exception { // C233282u5.LIZIZ.LIZ().LIZIZ(LIZ).LIZ(obtain).LIZ(hLn).LIZ((AbstractC59811HHc) new H9Q()); Object HOa = ReflectionUtil

傅恒的博客 4140

解决ImportError: DLL load failed while importing _rust: 找不到指定的程序

使用scrapy crawl xxx 时,发现报错如下。

m0_63054161的博客 3980

5分钟搞定Google Custom Search API申请:从注册到获取CX Key全流程

本文详细介绍了如何快速申请和配置Google Custom Search API,从Google Cloud项目创建、启用计费、获取API Key,到在Programmable Search Engine控制台创建自定义搜索引擎并获取关键的CX Key,提供了全流程实战指南。文章还包含安全配置建议、API调用测试方法及前端与后端的集成代码示例,帮助开发者高效实现网站或应用的智能搜索功能。

weixin_29227585的博客 1663

告别ZotFile!Zotero 7+百度网盘文献同步全攻略(含软链接避坑指南)

本文针对Zotero 7用户,提供了告别ZotFile插件后,利用百度网盘实现文献附件同步的完整解决方案。详细讲解了如何通过设置Zotero链接目录与创建软链接,将附件库迁移至云盘,并附有详细的避坑指南,确保数据安全与多设备同步的稳定性。

mmm90的博客 586

【python】Exception in thread Thread-1:Traceback (most recent call last)

用多线程和队列解决生产者、消费者问题时程序报错: Exception in thread Thread-1: Traceback (most recent call last): File "D:\Python36\lib\threading.py", line 916, in _bootstrap_inner self.run() File "D:\Python36\lib\t...

qq_37213040的博客 4万+

YOLOv11改进-卷积-引入小波卷积WTConv 解决多尺度小目标问题

1.首先,WTConv利用二维Haar小波变换对输入图像进行多级分解。低频分量 (LL):捕捉图像的低频信息,如整体形状或轮廓。水平高频分量 (LH):捕捉图像中的水平边缘信息。垂直高频分量 (HL):捕捉图像中的垂直边缘信息。对角线高频分量 (HH):捕捉图像的对角线细节。在每一级的小波变换中,图像被下采样(空间分辨率减半),但频率信息得到了更细的分解。递归地执行小波变换(称为多级分解)可以得到不同尺度下的频率分量。

qq_64693987的博客 1万+

【深度学习】避坑指南:计算机视觉常见的8个错误(附代码)

本文总结了计算机视觉编程过程中常见的8个错误

AbnerAI的博客 562

14、脑肿瘤复发预测与转移瘤跟踪的自动化方法

本文介绍两种脑肿瘤相关自动化方法:一种用于预测胶质瘤切除术后的肿瘤复发位置,结合图像配准、静态模型和动态模拟模型,利用患者的DTI数据进行预测;另一种用于在纵向扫描中跟踪转移性脑肿瘤,通过联合求解配准参数估计和图像变化标记问题,提高肿瘤跟踪的准确性和效率。文章同时分析了两种方法的优势与挑战,并提出了未来研究方向,旨在为脑肿瘤的诊断和治疗提供更可靠的工具。

defi6farmer的博客 115

复现报告:《多回路人机控制系统仿真及II型PIO分析》方法复现与代码实现

本文复现了谭文倩硕士论文《多回路人机控制系统仿真及II型PIO分析》中的关键方法,重点实现了频域驾驶员模型辨识和参数灵敏度分析。通过数字化提取论文图表数据,构建了结构驾驶员模型传递函数,并验证了参数变化对系统特性的影响。采用MATLAB实现了描述函数计算、模型参数辨识和灵敏度分析算法,为后续神经网络模型辨识和II型PIO研究奠定了基础。由于缺乏原始实验数据,部分结果通过数值模拟获得,但仍有效重现了论文的核心分析方法。~~~~~

huanghm88的专栏 175

解决ZeroDivisionError: integer division or modulo by zero问题

上述代码的 for 循环取值从 0 到 int(math.sqrt) ,在下一行 if 语句 m%i 时就出了问题,因为分子的取值不能为0。 报错: 错误原因: 上述代码的 for 循环取值从 0 到 int(math.sqrt) ,在下一行 if 语句 m%i 时就出了问题,分子不能为0。 改正:

m0_57860663的博客 2万+

v86.01 鸿蒙内核源码分析 (静态分配篇) | 很简单的一位小朋友 | 百篇博客分析 OpenHarmony 源码

相比动态分配,静态内存池的分配就是个小弟弟,非常的简单,两个结构体 + 一张图 就能说明白。

日拱一卒,力出一孔 775

python3 笔记19 异常处理

1.try/except 异常捕捉可以使用try/except语句 #!/usr/bin/python3 # while True: x = int(input('type an num\t')) break print('输入的是',x) 当输入正确及错误时,反馈情况如下: 现在尝试用try...except...抛出错误 #!/usr/bin/python3 while True: try: x = int(input('type...

Lucis_tomato的博客 373

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python学习笔记3:异常处理

异常处理1.标准异常总结2.标准警告总结 1.标准异常总结 A ArithmeticError:所有数值计算异常的基类 AssertionError:断言语句(assert)失败 AttributeError:尝试访问未知的对象属性 B BaseException:所有异常的 基类 E EnvironmentError:操作系统异常的基类 EOFError:没有内建输入,到达EOF标记 Exception:常规异常的 基类 F FloatingPointError:浮点计算异常 I ImportError

evenw_的博客 272

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

13_python笔记-异常处理-Python2/3差异

13_python笔记-异常处理-Python2/3差异回顾1练习示例1示例2示例3知识点2 错误与异常示例:出现错误异常,程序就立即终止知识点3 常见异常类示例1示例2知识点4 Python异常处理示例:try...except... 捕获示例1:except捕获的错误与程序触发的错误不一致,程序就会捕获不到示例2:如果父类异常在最前面,会吞噬所有的子类异常示例3:建议 先except子类,再except父类示例1:else子句示例2:finally子句示例3示例4练习5示例知识点6 手动触发异常(rai

cPen_web的博客 1277

学习Python Task 3 异常处理笔记

1. Python 标准异常总结 BaseException:所有异常的 基类 Exception:常规异常的 基类 StandardError:所有的内建标准异常的基类 ArithmeticError:所有数值计算异常的基类 FloatingPointError:浮点计算异常 OverflowError:数值运算超出最大限制 ZeroDivisionError:除数为零 AssertionError:断言语句(assert)失败 AttributeError:尝试访问未知的对象属性 EOFError:没有

xc194的博客 256

Python学习笔记 异常处理 DAY3

异常处理 1.Python异常总结 程序在运行过程当中,不可避免的会出现一些错误,比如: 使用了没有赋值过的变量 使用了不存在的索引 除0 … 这些错误在程序中,我们称其为异常。 程序运行过程中,一旦出现异常将会导致程序立即终止,异常以后的代码全部都不会执行! 异常体系内部有层次关系,Python异常体系中的部分关系如下所示: 异常类的层次结构如下: BaseException # 所有异常的基类 +-- SystemExit # 解释器请求退出 +-- KeyboardInterrupt #

weixin_41719200的博客 302

Python3笔记--异常处理

需求:当程序遇到问题时不结束,而是越过错误继续往下执行,增强程序可靠性 try....except....else--作用:用来检测try语句块中的错误,从而让except语句捕获错误信息并处理 格式: try: 语句t except 错误码 as e: 语句1 except 错误码 as e: 语句2 .... except 错误码 as e: ...

weixin_30735391的博客 105

学习笔记:Python3 异常处理

异常处理 仅为个人查阅使用,如有错误还请指正。 开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。 总的来说,编写程序时遇到的错误可大致分为 2 类,分别为语法错误和运行时错误。 语法错误是开发者疏忽导致的,属于真正意义上的错误,是解释器无法容忍的,因此,只有将程序中的...

weixin_30607029的博客 152

Python3.3 学习笔记5 - 异常处理

Python3.3 学习笔记5 - 异常处理

mhx123456789的博客 169

Python3笔记⑦——文件IO和异常处理

文件IO

ww0peo的博客 958

python3.4学习笔记(二) 类型判断,异常处理,终止程序

python3.4学习笔记(二) 类型判断,异常处理,终止程序

wangchaoqi1985的博客 111

python3中异常处理_Python3.4学习笔记之类型判断,异常处理,终止程序操作小结...

本文实例讲述了Python3.4类型判断,异常处理,终止程序操作。分享给大家供大家参考,具体如下:python3.4学习笔记 类型判断,异常处理,终止程序,实例代码:#idle中按F5可以运行代码#引入外部模块 import xxx#random模块,randint(开始数,结束数) 产生整数随机数import randomimport sysimport ossecret = random.ra...

weixin_39644021的博客 184

python学习笔记3:异常处理

异常就是运行期检测到的错误。计算机语言针对可能出现的错误定义了异常类型,某种错误引发对应的异常时,异常处理程序将被启动,从而恢复程序的正常运行。 1. Python 标准异常总结 类型 描述 BaseException 所有异常的 基类 Exception 常规异常的 基类 StandardError 所有的内建标准异常的基类 ArithmeticError 所有数值计算异常的基类 FloatingPointError 浮点计算异常 OverflowError 数值运算超

mujiuji的博客 260

Python3学习笔记--装饰器,异常处理

装饰器 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码边动的前提下增加额外的功能,装饰器返回值也是一个函数对象。简单来说,装饰器的作用就是为已经存在的对象添加额外的功能。 装饰器分为几种 简单装饰器: def use_logging(func): def wrapper(*args,**kwargs): logging.warn("%s is...

人生无处不修行 2364

Python笔记(2和3的异同、编码问题、pypy、异常处理)

python异常 Python2与Python3的部分异同 编码问题 pypy编译加速器 Ubuntu16.04下将Python3设置为默认 python异常 原文链接 try: xxx except Exception: xxx 此处Exception可不写,若填写则代表只有对应异常 try: xxx except Excepti...

wnma3mz的博客 505
上一篇: Python笔记(2):多参数,全局变量与局部变量,层状作用域,函数式编程,面向对象
下一篇: Python笔记(4):面向对象,迭代器,生产器
邓谦DQ
博客等级 码龄19年 14粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值