小编Thi*_*ter的帖子

异步node.js调用中的错误处理

我是node.js的新手,虽然我对JavaScript非常熟悉.我的问题是关于如何处理node.js中的错误的"最佳实践".

通常在编写Web服务器,FastCGI服务器或各种语言的网页时,我在多线程环境中使用阻塞处理程序的异常.当请求进来时,我通常做这样的事情:

function handleRequest(request, response) {
  try {

    if (request.url=="whatever")
      handleWhateverRequest(request, response);
    else
      throw new Error("404 not found");

  } catch (e) {
    response.writeHead(500, {'Content-Type': 'text/plain'});
    response.end("Server error: "+e.message);
  }
}

function handleWhateverRequest(request, response) {
  if (something) 
    throw new Error("something bad happened");
  Response.end("OK");
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以随时处理内部错误并向用户发送有效响应.

我理解,对于node.js,应该进行非阻塞调用,这显然会导致不同数量的回调,如下例所示:

var sys    = require('sys'),
    fs     = require('fs');

require("http").createServer(handleRequest).listen(8124);

function handleRequest(request, response) {

  fs.open("/proc/cpuinfo", "r",
    function(error, fd) {
      if (error)
        throw new Error("fs.open error: "+error.message);

      console.log("File open.");

      var buffer = new require('buffer').Buffer(10);
      fs.read(fd, buffer, 0, 10, …
Run Code Online (Sandbox Code Playgroud)

javascript exception-handling callback node.js

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

什么是std :: pair?

什么是std::pair,为什么我会使用它,以及boost::compressed_pair带来什么好处?

c++ boost stl std-pair

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

围绕圆圈动态排列一些元素

我正在寻找一个函数来围绕一个圆圈排列一些元素.
结果应该是这样的:

在此输入图像描述

javascript jquery

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

使用register_shutdown_function()处理PHP中的致命错误

根据这一答案的评论,可以通过捕捉致命错误关机功能无法使用被捕获set_error_handler().

但是,我无法确定如何确定是否由于致命错误或脚本到达结束而发生关闭.

此外,调试回溯函数似乎在关闭函数中已经不存在,这使得记录发生致命错误的堆栈跟踪变得毫无价值.

所以我的问题是:在保持创建适当回溯的能力的同时,对致命错误(特别是未定义的函数调用)做出反应的最佳方法是什么?

php error-handling fatal-error

36
推荐指数
3
解决办法
4万
查看次数

你如何设置HTML5表单验证消息的样式?

假设您有一些像这样的HTML:

<form>
    <input placeholder="Some text!" required>
    <input type="email" placeholder="An Email!" required>
    <input type="submit" value="A Button!">
</form>
Run Code Online (Sandbox Code Playgroud)

由于required属性,如果将空白留空,较新的Webkits和Firefox会在该字段旁边显示验证消息.

他们回应了以下规则的风格:

div {
    font: Helvetica;
}
Run Code Online (Sandbox Code Playgroud)

但我找不到更具体的选择器.有谁知道使用或将要使用的选择器,甚至是与此相关的webkit/gecko的错误报告?

(JSFiddle显示它们可以用div选择器设置样式:http://jsfiddle.net/p7kK5/)

forms html5

36
推荐指数
1
解决办法
3万
查看次数

向python对象添加属性

这是一件让我困扰一段时间的事情.为什么我不能这样做:

>>> a = ""
>>> a.foo = 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'foo'
Run Code Online (Sandbox Code Playgroud)

......虽然我可以做以下事情?

>>> class Bar():
...     pass
... 
>>> a = Bar()
>>> a.foo = 10 #ok!
Run Code Online (Sandbox Code Playgroud)

这里的规则是什么?你能指点我一些描述吗?

python attributes object

35
推荐指数
1
解决办法
2万
查看次数

用于删除多行"if"语句的代码风格?

如果在条件下缩进很长时间,你通常会做这样的事情(实际上,PyDev会这样缩进):

if (collResv.repeatability is None or
    collResv.somethingElse):
    collResv.rejected = True
    collResv.rejectCompletely()
Run Code Online (Sandbox Code Playgroud)

但是,这会将if语句启动的块放在与if条件的最后一部分相同的缩进级别上,这使得它在我看来非常难看/难以阅读,因为您没有立即看到块的开始位置.

我想到的其他一些风格:

if (collResv.repeatability is None or
        collResv.somethingElse):
    collResv.rejected = True
    collResv.rejectCompletely()
Run Code Online (Sandbox Code Playgroud)

这看起来非常不一致,因为第二行缩进比第一行缩进得多,但它是可读的.

if (collResv.repeatability is None or
  collResv.somethingElse):
    collResv.rejected = True
    collResv.rejectCompletely()
Run Code Online (Sandbox Code Playgroud)

这也比第一个例子更具可读性,但缩进不再是4的倍数,而且它看起来不对,因为第二行的缩进比第一行中条件的开头少.


所以,我的主要问题是:对于那些不需要过长行(即单行条件)的情况,是否有建议的缩进样式?如果没有,更喜欢这样的情况?

python coding-style indentation code-readability

34
推荐指数
4
解决办法
3万
查看次数

获取当年第一天/最后一天的日期对象

我需要date在今年的第一天和最后一天获得对象.

目前我正在使用这个工作正常的代码,但我很好奇是否有更好的方法来做到这一点; 例如,无需手动指定月/日.

from datetime import date
a = date(date.today().year, 1, 1)
b = date(date.today().year, 12, 31)
Run Code Online (Sandbox Code Playgroud)

python date

33
推荐指数
5
解决办法
2万
查看次数

JavaScript:通过双击禁用文本选择

双击html页面时,大多数浏览器选择双击的单词(或三键单击的段落).有没有办法摆脱这种行为?

请注意,我不想通过单击+拖动禁用常规选择; 即jQuery UI $('body').disableSelection()document.onselectstartDOM事件不是我想要的.

html javascript jquery selection

32
推荐指数
4
解决办法
2万
查看次数

如何删除已经集成的所有远程git分支?

在工作中,我们使用的主题分支在某些时候被集成到少数(3)主分支中.现在我想从我的远程存储库中删除已完全集成到主分支中的所有主题分支.如果那是不可能的,那么检索已经集成的本地分支列表也会没问题.

git git-branch

32
推荐指数
3
解决办法
1万
查看次数