我期待开始做我的JavaScript多一点错误的证明,而且我发现很多文档的使用try,catch,finally,和throw,但我不是专家在何时何地抛出错误找一吨的建议.
我也完全是因为听过有很多章节的书籍或对错误处理的深入解释而玩游戏.雄辩的JavaScript触及了这个问题,但对这个问题并没有很强的规定性或固执己见.
感谢您提出的任何建议!
在C和C++中,exit()和之间有什么区别abort()?我试图在错误后结束我的程序(不是例外).
如何记录我的Python错误?
try:
do_something()
except:
# How can I log my exception here, complete with its traceback?
Run Code Online (Sandbox Code Playgroud) 假设我们有一个产生的陈述integer(0),例如
a <- which(1:3 == 5)
Run Code Online (Sandbox Code Playgroud)
抓住这个最安全的方法是什么?
在node.js中,readFile()显示了如何捕获错误,但是没有关于错误处理的readFileSync()函数的注释.因此,如果我在没有文件时尝试使用readFileSync(),我会收到错误Error: ENOENT, no such file or directory.
如何捕获抛出的异常?doco没有说明抛出了什么异常,所以我不知道我需要捕获哪些异常.我应该注意到,我不喜欢通用的'捕获每一个可能的异常'样式的try/catch语句.在这种情况下,我希望捕获文件不存在时发生的特定异常,并尝试执行readFileSync.
请注意,我在启动连接尝试之前只在启动时执行同步功能,因此不需要我不应该使用同步功能的注释:-)
我一直在决定如何在我的应用程序中处理异常.
如果我的异常问题来自1)通过远程服务访问数据或2)反序列化JSON对象.不幸的是,我不能保证这些任务中的任何一个都成功(切断网络连接,不正确的JSON对象,这是我无法控制的).
因此,如果我遇到异常,我只需在函数内捕获它并返回FALSE给调用者.我的逻辑是,所有调用者真正关心的是任务是否成功,而不是为什么它不成功.
这是典型方法的一些示例代码(在JAVA中)
public boolean doSomething(Object p_somthingToDoOn)
{
boolean result = false;
try{
// if dirty object then clean
doactualStuffOnObject(p_jsonObject);
//assume success (no exception thrown)
result = true;
}
catch(Exception Ex)
{
//don't care about exceptions
Ex.printStackTrace();
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我认为这种方法很好,但我真的很想知道管理异常的最佳实践是什么(我应该在调用堆栈中一直冒出异常吗?).
总结关键问题:
跟进/编辑
感谢所有反馈,在网上找到了一些关于异常管理的优秀来源:
似乎异常管理是根据上下文而变化的事情之一.但最重要的是,人们应该如何管理系统中的异常.
另外注意通过过多的尝试/捕获代码腐烂或不给予例外它的尊重(例外是警告系统,还需要警告什么?).
此外,这是m3rLinEz的一个很好的选择评论.
我倾向于同意Anders Hejlsberg和你的看法,大多数来电者只关心操作是否成功.
从这个评论中,它提出了一些在处理异常时要考虑的问题:
关于PHP中的错误处理 - 据我所知,有3种样式:
die()或exit()风格:
$con = mysql_connect("localhost","root","password");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
Run Code Online (Sandbox Code Playgroud)throw Exception 样式:
if (!function_exists('curl_init')) {
throw new Exception('need the CURL PHP extension.
Recomplie PHP with curl');
}
Run Code Online (Sandbox Code Playgroud)trigger_error() 样式:
if(!is_array($config) && isset($config)) {
trigger_error('Error: config is not an array or is not set', E_USER_ERROR);
}
Run Code Online (Sandbox Code Playgroud)现在,在PHP手册中使用了所有三种方法.
我想知道的是我应该选择哪种风格?为什么?
这3个是否相互替换,因此可以互换使用?
稍微OT:是否只是我或每个人都认为PHP错误处理选项太多,以至于它让php开发人员感到困惑?
Notice: Constant DIR_FS_CATALOG already defined
Run Code Online (Sandbox Code Playgroud)
我已经注释掉display_errors的php.ini,但不能正常工作.
如何让PHP不向浏览器输出这些内容?
UPDATE
我放在display_errors = Off那里,但它仍在报告此类通知,
这是PHP 5.3的问题吗?
报告众多调用堆栈 ..
我需要专门捕获SQL服务器超时异常,以便可以不同方式处理它们.我知道我可以捕获SqlException,然后检查消息字符串是否包含"超时",但是想知道是否有更好的方法来做到这一点?
try
{
//some code
}
catch (SqlException ex)
{
if (ex.Message.Contains("Timeout"))
{
//handle timeout
}
else
{
throw;
}
}
Run Code Online (Sandbox Code Playgroud) 在什么情况下应该抓住java.lang.Error应用程序?