Python异常处理try与except跳过报错使得程序继续运行的方法

  本文介绍基于Python语言的异常处理模块tryexcept,对代码中出现的报错加以跳过,从而使得程序继续运行的方法。

  在Python语言中,try语句块用于包含可能引发异常的代码,而except语句块则用于定义在出现异常时要执行的代码。其基本结构如以下代码所示。

try:# 可能引发异常的代码块# ...
except ExceptionType1:# 处理 ExceptionType1 类型的异常# ...
except ExceptionType2:# 处理 ExceptionType2 类型的异常# ...
else:# 如果没有发生异常时要执行的代码# ...
finally:# 无论是否发生异常都要执行的代码# ...

  通过这种方式,我们就可以让原本一旦遇到错误就会自动中断运行的程序,对某些指定的报错内容加以忽视,从而使得虽然出现错误但是代码可以继续运行。这里就给出1个具体的例子。

  最近,需要按照一定规则对大量遥感影像加以镶嵌拼接。其中,因为镶嵌拼接的规则比较复杂(需要按照空间、时间等多个维度来确定将哪些遥感影像拼接在一起),所以导致每一次待拼接的遥感影像具体数量是不同的——可能对于第1个时间范围,需要将5景遥感影像需要拼接在一起;但是对于第2个时间范围,它就没有任何需要拼接的遥感影像。同时,因为待处理的时间范围比较多,所以我们也不可能手动去把每1个时间范围对应的情况都考虑一遍。

  这就导致,对于有遥感影像可以拼接的时间范围而言,代码会正常运行;但是对于期间没有任何遥感影像的时间范围而言,其拼接函数就会报错。例如,我这里使用了arcpy的拼接函数MosaicToNewRaster_management(),那么对于没有任何遥感影像的时间范围,函数就会出现报错,如下图所示。

  由上图可以看到,对于前3个时间范围(也就是202100120210092021017),其均不会有问题;而对于第4个时间范围(此时就该2021025这个时间范围了),由于其没有任何可以拼接的遥感影像,所以就会报错。

  对此,我们就可以使用Python语言的异常处理模块tryexcept,对可能出现的、由于时间范围内没有任何遥感影像可以拼接而导致的错误加以忽视。

  其中,本文的原始代码如下。

if int(date_str) < time_start + 8:image_file_list.append(image_file)
else:arcpy.MosaicToNewRaster_management(image_file_list, output_folder, str(time_start) + ".tif", number_of_bands = 4)print time_start, "finished."time_start += 8image_file_list[:] = []

  而修改后代码如下。

if int(date_str) < time_start + 8:image_file_list.append(image_file)
else:try:arcpy.MosaicToNewRaster_management(image_file_list, output_folder, str(time_start) + ".tif", number_of_bands = 4)print time_start, "finished."except arcpy.ExecuteError:print "MY_ERROR: ", time_starttime_start += 8image_file_list[:] = []

  其中,因为原本会出现错误的代码,就是arcpy的拼接函数MosaicToNewRaster_management()那里;所以我们需要在这个代码的位置前使用try——如果不报错,那么就先拼接,然后执行print time_start, "finished.",然后再执行最后的time_start += 82句代码;如果报错了,那么就不继续拼接了,而是执行print "MY_ERROR: ", time_start,然后再执行最后的time_start += 82句代码。

  其中,arcpy.ExecuteErrorarcpy模块中的一个异常类,是arcpy模块操作的一般错误;我们在执行arcpy模块的函数时,如果发生错误,那么就会引发arcpy.ExecuteError异常。大家在实际操作时,将这里的异常类修改为自己需要的异常类即可。

  随后,运行上述修改后的代码,如下图所示。

  可以看到,此时就可以完整的走完全部流程了。对于前3个没有问题的时间范围(也就是202100120210092021017),其均会打印finished.;而对于第4个时间范围(也就是2021025),其因为遇到了报错,所以就会打印MY_ERROR:;但是程序不会中断,而是继续按照这个逻辑去运行后续的时间范围,直至所有的时间范围都被处理。

  所以,我们就解决了由于可能具有的arcpy.ExecuteError异常而导致的程序中断问题;大家在实际使用时,按照自己程序中可能出现的报错类,对本文出现的arcpy.ExecuteError异常类加以修改即可。

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/802415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Echarts多曲线数值与Y周刻度不符合、Echarts tooltip文字设置左对齐、Echarts折线图背景区间色自定义

Echarts多曲线数值与Y周刻度不符合: 问题描述&#xff1a; 在展示多曲线图表的时候&#xff0c;发现图表曲线数值与Y轴刻度对应不上 问题解决方式&#xff1a; 查看下Echarts的配置option中的seriess属性(多曲线的时候这个属性应该是一个数组)&#xff0c;然后查看数组中的每个…

信用卡客户特征分析

分析思路 信用卡服务提供了一种方便的贷款方式&#xff0c;允许用户事先消费&#xff0c;之后再支付费用。对银行而言&#xff0c;这种服务既有较高的利润潜力&#xff0c;同时也伴随着用户可能不履行还款义务的风险。本⽂是基于2005年台湾信⽤卡客户数据&#xff0c;探究信⽤…

内含教程丨最高可降低 16 倍成本,ComfyUI Stable Cascade 教程已上线,一键部署!

2024 年 2 月&#xff0c;OpenAI 又一次站在了镁光灯下&#xff0c;Sora 横空出世并引发热烈讨论&#xff0c;「文生视频」的热潮被那段 60 秒的展示视频再度推高&#xff0c;也使得很多人忽视了其图片生成能力。 更加值得一提的是&#xff0c;其实就在 Sora 发布前不久&#…

vue3 +Taro 页面实现scroll-view 分页功能

需求 现在分页列表 后端只给你一个分页的数据列表 没有总页数 没有当前的分页 页数 只有这么一个list 、、、 如何去分页 我这使用的是scroll-view 组件 滑动到底部的事件 根据你当前设定的每页的数据数量和后端返回给你的数据列表数量 当某一次分页 两个数量不相等了以后 就…

SpringBoot第一个hello world项目

文章目录 前言一、Spring Boot是什么&#xff1f;二、使用步骤1. 创建项目2.书写测试 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不断发展&#xff0c;机器学习这门技术也越来越重要&#xff0c;很多人都开启了…

javaWeb车辆管理系统设计与实现

摘 要 随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理分配使用问题。 企业车辆管理系统运用现代化的计算机管理手段&#xff0c;不但可以对车辆的使用进行合理的管理&#xff0c;…

几种常用代码比较工具分析

代码比较工具是软件开发中不可或缺的辅助工具&#xff0c;它们帮助开发者识别代码之间的差异&#xff0c;合并代码变更&#xff0c;提高代码审查的效率。以下是一些常用代码比较工具的优缺点及适用性分析&#xff1a; 1.WinMerge&#xff1a; 优点&#xff1a;WinMerge是一款…

多模态检索增强生成的简单介绍

多模态检索增强生成的简单介绍 文章目录 多模态检索增强生成的简单介绍为什么多模态很难&#xff1f;每种模式都有其自身的挑战您如何跨模式管理信息&#xff1f; 多模态检索方法将所有模态嵌入到同一向量空间中将所有模式归结为一种主要模式对于不同的方式有单独的备用 多模式…

Redis的高可用和持久化

目录 一、Redis高可用 二、Redis持久化 2.1 持久化的功能 2.2 Redis提供两种方式进行持久化 三、RDB持久化 3.1 触发条件 3.1.1 手动触发 3.1.2 自动触发 3.1.3 其他自动触发机制 四、AOF持久化 4.1 开启AOF 4.2 执行流程 4.2.1 命令追加 (append) 4.2.2 文件写入…

Android Binder——Kernel层介绍(七)

一、简介 Android Binder 的 Kernel 层也就是 Binder 的驱动层,位于 Binder 结构的最底层,这部分用于实现 Binder 的设备驱动。 主要功能 进程间通信 。Binder 机制是 Android 系统提供的一种跨进程通信机制,它允许在不同进程之间进行数据传输和方法调用,实现了进程间的解…

[echarts] y轴不显示0

main.js 全局引入 import * as echarts from echarts import Vue from vueVue.prototype.$echarts echarts使用&#xff1a; this.myChart echarts.init(document.getElementById(main))改为 this.myChart this.$echarts.init(document.getElementById(main))

JavaScript PAT乙级题解 1058 选择题

批改多选题是比较麻烦的事情&#xff0c;本题就请你写个程序帮助老师批改多选题&#xff0c;并且指出哪道题错的人最多。 输入格式&#xff1a; 输入在第一行给出两个正整数 N&#xff08;≤ 1000&#xff09;和 M&#xff08;≤ 100&#xff09;&#xff0c;分别是学生人数和…

vue3-element-admin实现同一个菜单多标签

原框架代码: 赵志江/huzhushan-vue3-element-admin 目录 TagsBar实现 实现同一个菜单多标签 device/detail/:id&#xff0c;不同参数时页面缓存删不掉的问题 TagsBar实现 在src/layout/components/下新建目录Tagsbar&#xff0c;新建index.vue <template><div c…

生产车间图纸无纸化,生产车间图纸无纸化解决方案

生产车间图纸无纸化是指通过采用数字化设备和技术&#xff0c;将传统的纸质图纸转化为电子文档&#xff0c;并在生产过程中实现图纸的电子化、网络化和自动化管理。这一转变旨在提高工作效率、降低成本、提高安全性&#xff0c;并推动生产车间的现代化和智能化。 实现生产车间图…

Java中的锁机制,包括可重入锁、读写锁等。

Java中的锁机制是一种用于控制多个线程对共享资源的访问&#xff0c;以避免数据不一致和其他并发问题的技术。Java提供了多种锁机制&#xff0c;每种都有其特定的用途和优势。 1. 内置锁&#xff08;synchronized&#xff09; Java语言本身提供了内置锁机制&#xff0c;通过s…

蓝桥杯算法题:最大比例

题目描述&#xff1a; X星球的某个大奖赛设了 M 级奖励。 每个级别的奖金是一个正整数。 并且&#xff0c;相邻的两个级别间的比例是个固定值。 也就是说&#xff1a;所有级别的奖金数构成了一个等比数列。 比如&#xff1a;16,24,36,54&#xff0c;其等比值为&#xff1a;3/2。…

SpringBoot 定时任务实践、定时任务按指定时间执行

Q1. springboot怎样创建定时任务&#xff1f; 很显然&#xff0c;人人都知道&#xff0c;Scheduled(cron ".....") Q2. 如上所示创建了定时任务却未能执行是为什么&#xff1f; 如果你的cron确定没写错的话 cron表达式是否合法&#xff0c;可参考此处&#xff0c…

Android集成微信支付

官方api&#xff1a;Android接入指南 | 微信开放文档 打开微信开放平台登录账户后点击创建应用 根据提示填写完相应的内容提交审核通过后&#xff0c;需要开通支付权限。 1.接着在你的项目工程build.gradle文件中添加微信支付依赖库 ​api com.tencent.mm.opensdk:wechat-sdk…

python代码使用过程中使用快捷键注释时报错

1.代码 2.代码报错 3.代码注释后的结果 4. 原因

sql注入方式之联合注入

1.1 靶场环境 系统centos7 IP地址192.168.1.24 1.2 联合注入原理 联合查询注入是联合两个表进行注入攻击&#xff0c;使用关键词 union select 对两个表进行联合查询。两个表的字段要数要相同&#xff0c;不然会出现报错。 1.3 找注入点 找注入点&#xff0c;当输入id1 an…