Articles of 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议? 谢谢!

“在这个时候是意外的。”

我在batch file上运行这个命令: for %I in (*.txt *.doc) do copy %I c:\test2 …它不断返回: 我这个时候是意外的。 这个错误的原因是什么?

错误1053服务没有响应启动或控制请求

我已经用C#编写了一个Windows服务,基本上每分钟都会检查我的数据库以获取订单,从这些订单生成一个PDF,并通过电子邮件发送。 这个逻辑在我的testing中是完美的。 当我创build服务,并使用安装项目进行安装时,当我开始服务mmc服务时,我得到: 错误1053服务没有及时响应启动或控制请求 我的OnStart方法如下所示: protected override void OnStart(string[] args) { //writeToWindowsEventLog("Service started", EventLogEntryType.Information); timer.Enabled = true; } 基本上,只是启用计时器…所以没有过程密集的电话那里。 我哪里错了? 我已经尝试设置启动帐户本地系统,networking服务等…没有任何工作! 编辑: 这里是我的代码:( processPurchaseOrders是数据库查询和pdf的生成等方法…) public partial class PurchaseOrderDispatcher : ServiceBase { //this is the main timer of the service private System.Timers.Timer timer; public PurchaseOrderDispatcher() { InitializeComponent(); } // The main entry point for the process […]