标签: error-handling

JavaScript错误处理的最佳实践是什么?

我期待开始做我的JavaScript多一点错误的证明,而且我发现很多文档的使用try,catch,finally,和throw,但我不是专家在何时何地抛出错误找一吨的建议.

  • 每一段代码都应该包含在try/catch中吗?
  • 是否有更多这样的建议,在什么时候应该抓住错误?
  • 是否存在提高错误的缺点,而不是让代码在生产中无声地失败?
  • 就实现而言,这已经触及SO,但服务器日志JS错误是一种有效的策略吗?
  • 关于在我的应用程序中捕获错误,我应该知道的任何其他内容?

我也完全是因为听过有很多章节的书籍或对错误处理的深入解释而玩游戏.雄辩的JavaScript触及了这个问题,但对这个问题并没有很强的规定性或固执己见.

感谢您提出的任何建议!

javascript error-handling

128
推荐指数
4
解决办法
5万
查看次数

exit()和abort()有什么区别?

在C和C++中,exit()和之间有什么区别abort()?我试图在错误后结束我的程序(不是例外).

c c++ error-handling exit abort

127
推荐指数
5
解决办法
6万
查看次数

使用回溯记录异常

如何记录我的Python错误?

try:
    do_something()
except:
    # How can I log my exception here, complete with its traceback?
Run Code Online (Sandbox Code Playgroud)

python error-handling logging exception

123
推荐指数
6
解决办法
10万
查看次数

如何捕获整数(0)?

假设我们有一个产生的陈述integer(0),例如

 a <- which(1:3 == 5)
Run Code Online (Sandbox Code Playgroud)

抓住这个最安全的方法是什么?

error-handling integer r try-catch

118
推荐指数
5
解决办法
10万
查看次数

如何捕获fs.readFileSync()没有文件?

在node.js中,readFile()显示了如何捕获错误,但是没有关于错误处理的readFileSync()函数的注释.因此,如果我在没有文件时尝试使用readFileSync(),我会收到错误Error: ENOENT, no such file or directory.

如何捕获抛出的异常?doco没有说明抛出了什么异常,所以我不知道我需要捕获哪些异常.我应该注意到,我不喜欢通用的'捕获每一个可能的异常'样式的try/catch语句.在这种情况下,我希望捕获文件不存在时发生的特定异常,并尝试执行readFileSync.

请注意,我在启动连接尝试之前只在启动时执行同步功能,因此不需要我不应该使用同步功能的注释:-)

error-handling try-catch node.js

118
推荐指数
4
解决办法
8万
查看次数

Java或C#中的异常管理的最佳实践

我一直在决定如何在我的应用程序中处理异常.

如果我的异常问题来自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)

我认为这种方法很好,但我真的很想知道管理异常的最佳实践是什么(我应该在调用堆栈中一直冒出异常吗?).

总结关键问题:

  1. 是否可以捕获异常但不会冒泡或正式通知系统(通过日志或通知用户)?
  2. 对于不会导致所有需要try/catch块的异常的最佳实践有哪些?

跟进/编辑

感谢所有反馈,在网上找到了一些关于异常管理的优秀来源:

似乎异常管理是根据上下文而变化的事情之一.但最重要的是,人们应该如何管理系统中的异常.

另外注意通过过多的尝试/捕获代码腐烂或不给予例外它的尊重(例外是警告系统,还需要警告什么?).

此外,这是m3rLinEz的一个很好的选择评论.

我倾向于同意Anders Hejlsberg和你的看法,大多数来电者只关心操作是否成功.

从这个评论中,它提出了一些在处理异常时要考虑的问题:

  • 抛出此异常有什么意义?
  • 处理它有什么意义?
  • 呼叫者是否真的关心异常,还是只关心呼叫是否成功?
  • 是否强制调用者管理潜在的异常优雅?
  • 你是否尊重这种语言的含义?
    • 你真的需要返回像布尔这样的成功标志吗?返回boolean(或int)更像是一种C心态而不是Java(在Java中你只是处理异常).
    • 遵循与语言相关的错误管理结构:)!

c# java error-handling exception

117
推荐指数
5
解决办法
3万
查看次数

PHP错误处理:die()Vs trigger_error()Vs抛出异常

关于PHP中的错误处理 - 据我所知,有3种样式:

  1. die()exit()风格:

    $con = mysql_connect("localhost","root","password");
    
    if (!$con) {
     die('Could not connect: ' . mysql_error());
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 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)
  3. 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开发人员感到困惑?

php error-handling

116
推荐指数
2
解决办法
3万
查看次数

如何关闭PHP通知?

Notice: Constant DIR_FS_CATALOG already defined
Run Code Online (Sandbox Code Playgroud)

我已经注释掉display_errorsphp.ini,但不能正常工作.

如何让PHP不向浏览器输出这些内容?

UPDATE

我放在display_errors = Off那里,但它仍在报告此类通知,

这是PHP 5.3的问题吗?

报告众多调用堆栈 ..

php error-handling constants

114
推荐指数
9
解决办法
40万
查看次数

如何捕获SQLServer超时异常

我需要专门捕获SQL服务器超时异常,以便可以不同方式处理它们.我知道我可以捕获SqlException,然后检查消息字符串是否包含"超时",但是想知道是否有更好的方法来做到这一点?

try
{
    //some code
}
catch (SqlException ex)
{

    if (ex.Message.Contains("Timeout"))
    {
         //handle timeout
    }
    else
    {
         throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# sql-server error-handling

112
推荐指数
3
解决办法
9万
查看次数

110
推荐指数
9
解决办法
15万
查看次数