Tag: error handling

PHP:自定义error handling程序 – 处理分析和致命错误

我怎样才能处理parsing和致命错误使用自定义error handling程序?

在C代码中处理错误

在C库中以一致的方式处理错误时,你认为什么是“最佳实践”? 有两种方法我一直在想: 总是返回错误代码。 一个典型的函数看起来像这样: MYAPI_ERROR getObjectSize(MYAPIHandle h, int* returnedSize); 总是提供一个错误指针的方法: int getObjectSize(MYAPIHandle h, MYAPI_ERROR* returnedError); 在使用第一种方法时,可以像这样编写代码,将error handling检查直接放在函数调用上: int size; if(getObjectSize(h, &size) != MYAPI_SUCCESS) { // Error handling } 这看起来比这里的error handling代码更好。 MYAPIError error; int size; size = getObjectSize(h, &error); if(error != MYAPI_SUCCESS) { // Error handling } 不过,我认为使用返回值来返回数据会使代码更具可读性。很明显,在第二个示例中写入了sizevariables。 你有什么想法,为什么我应该喜欢任何这些方法,或者混合使用或使用其他的东西? 我不是全局错误状态的粉丝,因为它倾向于使multithreading使用库方式更痛苦。 编辑:关于这一点的C ++具体想法也将是有趣的听到,只要他们不涉及例外,因为它不是我目前的select…

来自subprocess命令的实时输出

我使用Python脚本作为stream体动力学代码的驱动程序。 当运行模拟时,我使用subprocess.Popen来运行代码,将stdout和stderr的输出收集到subprocess.PIPE —然后我可以打印(并保存到日志文件)输出信息,并检查是否有错误。 问题是,我不知道代码是如何进展的。 如果我直接从命令行运行它,它会给出关于它在什么时候迭代的输出,什么时间,什么是下一个时间步,等等。 有没有一种方法来存储输出(用于logging和错误检查),并且还产生实时stream输出? 我的代码的相关部分: ret_val = subprocess.Popen( run_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ) output, errors = ret_val.communicate() log_file.write(output) print output if( ret_val.returncode ): print "RUN failed\n\n%s\n\n" % (errors) success = False if( errors ): log_file.write("\n\n%s\n\n" % errors) 本来我是通过teepipe道run_command ,以便副本直接到日志文件,并仍然输出stream到terminal – 但这样我不能存储任何错误(我知道)。 编辑: 临时解决scheme: ret_val = subprocess.Popen( run_command, stdout=log_file, stderr=subprocess.PIPE, shell=True ) while not […]

Chrome和Firefox中的Javascript中报告了隐藏的“脚本错误”

我有一个脚本,检测我的网站上的Javascript错误,并将其发送到我的后端进行报告。 它报告遇到的第一个错误,假定的行号和时间。 编辑包括文档types: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" xmlns:fb="http://www.facebook.com/2008/fbml"> … <script type="text/javascript"> //<![CDATA[ // for debugging javascript! (function(window){ window.onerror = function(msg, url, ln) { //transform errors if (typeof(msg) === 'object' && msg.srcElement && msg.target) { if(msg.srcElement == '[object HTMLScriptElement]' && msg.target == '[object HTMLScriptElement]'){ msg = 'Error loading […]

是不是可以使用JSON.stringifystring化错误?

重现问题 我试图通过使用Web套接字传递错误消息时遇到了一个问题。 我可以使用JSON.stringify复制我正面临的问题,以迎合更广泛的受众: // node v0.10.15 > var error = new Error('simple error message'); undefined > error [Error: simple error message] > Object.getOwnPropertyNames(error); [ 'stack', 'arguments', 'type', 'message' ] > JSON.stringify(error); '{}' 问题是我最终得到一个空的对象。 我试过了 浏览器 我第一次尝试离开node.js并在各种浏览器中运行它。 Chrome版本28给了我相同的结果,有趣的是,Firefox至less做了一个尝试,但是忽略了这个消息: >>> JSON.stringify(error); // Firebug, Firefox 23 {"fileName":"debug eval code","lineNumber":1,"stack":"@debug eval code:1\n"} 替代function 然后我看了Error.prototype 。 它显示了原型包含toString和toSource等方法。 知道函数不能被string化,当调用JSON.stringify去除所有函数时,我包含了一个replace函数,但是后来意识到它也有一些奇怪的行为: var error […]

LBYL vs EAFP在Java中?

我最近在教自己的Python,并发现LBYL / EAFP成语在错误检查之前执行代码。 在Python中,EAFP似乎是被接受的风格,而且它似乎与这个语言一起工作得很好。 LBYL(在你之前): def safe_divide_1(x, y): if y == 0: print "Divide-by-0 attempt detected" return None else: return x/y EAFP( 它比P ermission更安全 ): def safe_divide_2(x, y): try: return x/y except ZeroDivisionError: print "Divide-by-0 attempt detected" return None 我的问题是:我从来没有听说过使用EAFP作为主要的数据validation结构,来自Java和C ++的背景。 EAFP是在Java中使用明智的东西吗? 还是有太多的例外开销? 我知道只有在实际抛出exception时才会有开销,所以我不确定为什么不使用EAFP的简单方法。 这只是偏好吗?

什么是扩展JavaScript错误的好方法?

我想扔我的JS代码中的一些东西,我希望他们成为instanceof错误,但我也想让他们成为别的东西。 在Python中,通常,子类是Exception。 在JS中做什么是合适的?

在Bash中处理错误

什么是你最喜欢的方法来处理在Bash中的错误? 处理我在网上发现的错误的最好的例子是由William Shotts,Jr在http://www.linuxcommand.org撰写的。 他build议在Bash中使用以下函数进行error handling: #!/bin/bash # A slicker error handling routine # I put a variable in my scripts named PROGNAME which # holds the name of the program being run. You can get this # value from the first item on the command line ($0). # Reference: This was copied from <http://www.linuxcommand.org/wss0150.php> PROGNAME=$(basename […]

由于一般错误,此时无法处理应用程序info.plistvalidation(1095)

我正在创build一个报摊应用程序。 应用程序已准备就绪,现在我正尝试使用应用程序加载器在苹果商店中上传应用程序。 上传显示错误信息的zip文件 由于一般错误,此时无法处理应用程序info.plistvalidation(1095) 我在网上search了这个,但没有find解决scheme。

Go:单值上下文中的多个值

由于Go中的error handling,我经常会得到多个值函数。 到目前为止,我pipe理这个的方式非常混乱,我正在寻找最佳实践来编写更简洁的代码。 假设我有以下function: type Item struct { Value int Name string } func Get(value int) (Item, error) { // some code return item, nil } 我怎样才能优雅地分配一个新的variablesitem.Value 。 在介绍error handling之前,我的函数只是返回item ,我可以简单地这样做: val := Get(1).Value 现在我这样做: item, _ := Get(1) val := item.Value 没有办法直接访问第一个返回的variables? 非常感谢