Articles of error handling

处理C只读文件closures错误

我正在做一些基本的文件读取使用打开,读取和closures(文件打开访问模式O_RDONLY)。 当closures文件的时候,我想不出一个好办法来处理可能的文件closures错误,以确保文件closures正确。 有什么build议么?

什么是一个好的Linux退出错误代码策略?

我有几个独立的可执行Perl,PHP CLI脚本和C ++程序,我需要开发一个退出错误代码策略。 这些程序由其他程序使用我创build的用于在PHP中使用exec()的封装类来调用。 所以,我将能够得到一个错误代码。 基于那个错误代码,调用脚本将需要做一些事情。 我已经做了一些研究,看起来1-254(或者只是1-127)范围内的任何事情对于用户定义的错误代码来说都是公平的游戏。 我只是想知道在这种情况下其他人是如何处理error handling的。

停止打印php错误信息到浏览器

我使用PHP 5.3,CentOS 6.2,httpd 2.2.15,NetBeans 7.0.1(通过ftp远程运行)。 我想停止向浏览器打印错误消息,这足以打印到httpd的error_log。 我认为做try / catch我会决定如何处理错误,但它仍然打印到error_log和浏览器。 function smic_gettext($phrase){ try{ $tr_text = $this->language_array[$phrase]; } catch(Exception $e){ error_log("Couldn't find any entry in the translation file for ".$phrase.". ".$e); return $phrase; } return $tr_text; } 我应该如何configuration才能阻止这种行为? 我曾尝试在php.ini中设置display_errors = Off和display_errors = 0。 没有区别(我没有重启httpd)。

在bash脚本中引发错误

我想在消息“testing用例失败!!!”的Bash脚本中引发错误。 如何在Bash中做到这一点? 例如: if [ condition ]; then raise error "Test cases failed !!!" fi

如果posixclosures呼叫失败怎么办?

在我的系统(Ubuntu Linux,glibc)上, close调用的手册页指定了它可以返回的几个错误返回值。 它也说 不检查close()的返回值是一个常见但严重的编程错误。 并在同一时间 请注意,返回值只能用于诊断。 特别是close()不应该在EINTR之后重试,因为这可能导致来自另一个线程的重用描述符被closures。 所以我不允许忽略返回值,也不能重试呼叫。 鉴于此,我应该如何处理close()呼叫失败? 如果在写文件的时候发生了错误,我可能应该尝试在其他地方写信息以避免数据丢失。 如果我只是在阅读文件,我可以只logging失败,并继续假装什么都没有发生? 是否有任何警告,文件描述符泄漏或其他?

errno,strerror和Linux系统调用

在使用CRT函数(如fopen)后,我可以使用strerror来获取errno值的文本表示。 如果我使用开放的 Linux系统调用而不是CRT函数,它也会在失败时设置errno值。 这是正确的应用strerror这个errno值? 如果没有,是否有一些Linux系统调用,这跟strerror一样?

当提供的缓冲区太小时,哪个HRESULT返回?

我在一个IUnknown来源的COM接口中有一个函数: HRESULT GetPassword( [in] long bufferLength, [out] WCHAR* buffer ); 合同是实现应该检查缓冲区是否足够大以存储正在检索的string。 如果缓冲区足够大,string被复制并返回S_OK ,否则函数将返回一个错误指示。 但是我找不到合适的HRESULT值。 E_UNEXPECTED似乎非常愚蠢和无益。 我发现最接近的是DISP_E_BUFFERTOOSMALL但看起来像是仅用于IDispatch衍生的接口。 如果提供的缓冲区太小,应该返回哪个HRESULT ?

奇怪的Qt SSL问题 – 错误“没有错误”出现,没有别的,如果我忽略它,一切正常

问题如下:在我的Qt应用程序中,我有一个QWebView,我用它来加载HTTPS页面。 在我的开发机器上一切正常,所以我现在试图让它在testing机器上运行。 我运行的应用程序,但页面没有加载(QWebView是空白的)。 经过多次debugging,我发现问题是出现SSL错误,sslErrors()信号被触发。 这是我的sslErrors()处理代码: void blah::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors) { foreach(QSslError error, errors) { qDebug() << error.errorString() << endl; } reply->ignoreSslErrors(); } 上面的代码打印的唯一的是: "No error" 所以没有错误,但除非我调用reply->ignoreSslErrors() ,否则页面不会加载(在testing机器上,在我的开发人员计算机上没有错误报告)。 咦? 这是一个错误? 如果确定它是“没有错误”的types,忽略错误是安全的吗?

Windows中的文件redirect和%errorlevel%

比方说,我们想用下面的命令在windows中创build一个空文件: type nul > C:\does\not\exist\file.txt 该目录不存在,所以我们得到的错误: The system cannot find the path specified 如果你打印出%errorlevel%的输出是: echo %errorlevel% 0 然而,这个命令并不成功! 我注意到,如果您使用redirect,Windows不会设置最后一个命令的%errorlevel% 。 有没有解决的办法?

批次:“rd”的退出代码也是错误的

我正在写一个批处理(.bat)脚本,我需要处理删除文件夹失败的情况。 我使用%errorlevel%捕获退出代码,但在rd命令的情况下,它似乎不工作: C:\Users\edo\Desktop>rd testdir Directory is not empty C:\Users\edo\Desktop>echo %errorlevel% 0 为什么? 你有什么build议? 谢谢!