Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在让程序中断的情况下捕获错误并写入strerr

如何在让程序中断的情况下捕获错误并写入strerr
EN

Stack Overflow用户
提问于 2014-07-13 08:58:19
回答 2查看 62关注 0票数 0

假设我有一个连续运行的程序,等待来自具有标准输入的程序的命令。保持等待订单的方法称为"run“using while。

正如您所看到的,当run()获得特定的顺序时,它们会将顺序传递给特定的函数。

当我运行程序时,每次我给出一个可能导致错误的命令(比如: Index error),它就会崩溃并关闭(显然)。

我决定尝试用try/except捕捉这个错误

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def a(order):
    try:
        <some algorithm>
        return something
    except Exception, error:
        stderr.write(error)
        stderr.flush()
def b(order):
    try:
        <some algorithm>
        return something
    except Exception, error:
        stderr.write(error)
        stderr.flush()
def run(order)
    while stdin.notclosed:
        try:
            read stdin
            if stdin==specific order :
                x=a(stdin order)
            else:
                x=b(stdin order)
        except Exception,error:
            stderr.write(error)
            stderr.flush()
run()

但是,给出命令的程序似乎不能读取错误。从我的分析师看来,发出命令的程序似乎只在读取命令的程序结束后才开始读取stderr。但是,由于try/catch的原因,程序永远不会结束。有没有捕获错误的方法,写出来,然后结束。(错误可能来自任何函数)

PS:让我们假设你不能修改或读取给出命令的程序。(这是竞争,我之所以这么说,是因为当我访问stderr时,它是空的。)

EN

回答 2

Stack Overflow用户

发布于 2014-07-13 16:36:37

我不确定这是否能满足您的需要,但是您可以通过在except块的末尾添加一个空的raise语句来重新引发正在处理的异常,如下所示。这将导致异常由下一个更高的try/except块处理(如果有),或者如果没有,则终止程序。

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def a(order):
    try:
        <some algorithm>
        return something
    except Exception, error:
        stderr.write(error)
        stderr.flush()
        raise  # re-raise exception
票数 0
EN

Stack Overflow用户

发布于 2014-07-14 07:16:50

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    def a(order):
        try:
            <some algorithm>
            return something
        except Exception, error:
           import traceback
           trace = traceback.format_exc()
           return trace

    def b(order):
        try:
            <some algorithm>
            return something
        except Exception, error:
           import traceback
           trace = traceback.format_exc()
           return trace

    def run(order)
        while stdin.notclosed:
            try:
                read stdin
                if stdin==specific order :
                    x=a(stdin order)
                else:
                    x=b(stdin order)
                #check if x == trace then sys.exit()
            except Exception,error:
                stderr.write(error)
                stderr.flush()
    run()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24721065

复制
相关文章
python捕获ctrl+c手工中断程序
日常编写调试运行程序过程中,难免需要手动停止,以下两种方法可以捕获ctrl+c立即停止程序
py3study
2020/01/08
5.7K0
【PHP错误捕获分享】PHP捕获应用错误 简单记录并友好处理展示
为了某种目的而需要捕获系统错误,在此简单分享下某个项目中的捕获方法。 默认php错误如图 index.php /** * 捕获应用错误记录 */ function ef_error_re
96php.cn
2018/04/28
1.1K0
【PHP错误捕获分享】PHP捕获应用错误 简单记录并友好处理展示
错误捕获
再厉害的人也不敢保证写程序能考虑的100%周全,像Windows系统、Office都不停的会有补丁更新bug,所以在程序里捕获错误就非常的有必要。
xyj
2020/07/28
2.8K0
错误捕获
async/await 的错误捕获
这样写可以正常打印getdata success 但是如果我们给getData传入的参数不是1,getData会返回一个reject的Promise,而这个地方我们并没有对这个错误进行捕获,则会在控制台看见这样一个鲜红的报错Uncaught (in promise) getdata error
从入门到进错门
2020/03/19
1.3K0
定位并解决程序错误
不管你用的什么编程语言,从你接触她开始就注定了你们相爱相杀的一生。为了增加生活乐趣,她会时不时给你来点小惊喜。
bugsuse
2020/04/21
1.2K0
定位并解决程序错误
关于javascript错误捕获
``` javascript的出错我们应该都很熟悉,例如`xxx undefined`,`SyntaxError`等。 我们team将出现错误的javascript代码取名为badjs,也有一个
IMWeb前端团队
2017/12/29
1.1K0
关于 javascript 错误捕获
作者:vienwu 随便写点啥,不然要被k。。 javascript 的出错我们应该都很熟悉,例如xxx undefined,SyntaxError等。 我们 team 将出现错误的 javascri
腾讯IVWEB团队
2017/03/13
1.2K0
关于javascript错误捕获
function define(){ ... } var a = define; define = function(){ try{ a.apply(this,arguments); }catch(e){ ...错误上报 } };
IMWeb前端团队
2019/12/03
8620
js setTimeout 错误捕获
封装为 promise,通过 promise.catch 捕获,或 promise 全局错误捕获
蓓蕾心晴
2022/12/18
2.8K0
程序异常退出,如何通过Go语言捕获fatal错误?
我们团队经常会对我们现有视频平台比如 EasyNVR、EasyGBS 等进行版本更新以及不同系统的适配测试,在 EasyNVR 测试版本中,出现程序异常退出的情况,但是日志中查找不到对应的错误。
玖柒的小窝
2021/11/21
1.1K0
程序异常退出,如何通过Go语言捕获fatal错误?
让上次犯的错反省出梦想,记一次云小程序写入数据错误
由于其中的$people是字符串,所以得出的结果为0;本来以为可以通过云数据进行转换;MSSQL是可以通过字段转换CAST。但遗憾的是小程序云数据库竟然没有。。没有。。没有。。那怎么办。想到的旧数据的解决办法是通过Update通过新增一个数据段进行处理,但这样也不是办法,要从源头上进行解决。好在当时在开发的时候直接使用云函数进行写库。
谭广健
2021/06/16
2960
如何避免程序运行过程中出现错误中断程序?(下)
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/25
1.4K0
程序异常退出,如何通过Go语言捕获fatal错误?
我们团队经常会对我们现有视频平台比如 EasyNVR、EasyGBS 等进行版本更新以及不同系统的适配测试,在 EasyNVR 测试版本中,出现程序异常退出的情况,但是日志中查找不到对应的错误。
TSINGSEE青犀视频
2021/11/18
3.6K0
如何在Kerberos环境使用Flume采集Kafka数据并写入HDFS
注意:Fayson的github调整为:https://github.com/fayson/cdhproject,本文的代码在github中也能找到。
Fayson
2018/03/29
6K0
如何在Kerberos环境使用Flume采集Kafka数据并写入HDFS
商场如战场,怎么让小程序成为你的杀敌利器?
曾经地产商喜欢宣传“旺铺传三代”,但这句广告语在现在看来貌似行不通了。现在很多曾经繁华的步行街现在已门可罗雀,贴着“店铺转让”的店也比比皆是。除了步行街,商场的日子也越来越不好过了。
中微信通
2018/09/18
14K0
商场如战场,怎么让小程序成为你的杀敌利器?
让JavaWEB程序如MySQL服务一样自启动
公司是有这么个需求,让打包后的jar包每天随着系统启动而自行启动,写脚本太麻烦,使用winsw差不多一劳永逸,而且很方便 概述 WinSW is an executable binary, which can be used to wrap and manage a custom process as a Windows service. Once you download the installation package, you can rename WinSW.exe to any name, e.g
框架师
2021/03/06
7290
前端错误捕获方案总结
本文主要摘抄自:https://juejin.cn/post/7172072612430872584#heading-10,主要用来记录和学习,也推荐大家看看原博主的文章。
蓓蕾心晴
2022/12/30
1.6K0
前端错误捕获方案总结
无法捕获到async await的错误
最近在做.net项目中遇到无法捕获到错误的问题,即使在全局的错误捕获中,也依然没有捕获到,直接造成系统奔溃,究其原因是用了async void 的方法,async void是要避免使用的,详情可以看MSDN这篇文章: https://docs.microsoft.com/zh-CN/archive/msdn-magazine/2013/march/async-await-best-practices-in-asynchronous-programming
javascript.shop
2020/02/14
1.1K0
点击加载更多

相似问题

asynchronousSocketChannel写入并中断程序的其他部分

10

如何在Runnable对象中中断线程并捕获中断

21

捕获错误,我可以中断并停止进程吗?

12

如何在错误的情况下捕获异常并继续运行?

20

如何在while循环中中断并继续尝试捕获?

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文