bootstraptable append 没有events事件_(原创)Node.JS实战50:捕获错误之“错误事件”。...

c88cc7e57428a391e4b227f8bc437b64.png

在Node中,错误事件可以在任意继承EventEmitter的对像中触发,这点很重要。
如果我们继承了一个事件,而没有给它设定错误处理函数,则错误发生是不可避免的。

8684ef5233169ac24ff1ef7670a79c2b.png


例程:

var Event_Emitter = require("events").EventEmitter;
var ee = new Event_Emitter();
ee.emit("error",new Error("no handler to catch me"));

运行结果:

2923baa32380d2ba9b8913ed2a0861e4.png

这就是因为继承了EventEmitter对象,抛出了错误,但没有错误接收函数。
我们对代码进行修改,加入错误处理函数:

var Event_Emitter = require("events").EventEmitter;
var ee = new Event_Emitter();

ee.on("error",function(err){
    console.log(err.message);
});

ee.emit("error",new Error("no handler to catch me"));

注意:事件处理函数要在事件抛出之前。

更多本系列文章?传送门:

WangLiwen's Node.JS in practice​www.fairysoftware.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是上题的代码:def infix_to_postfix(expression): precedence = {'!': 3, '&': 2, '|': 1, '(': 0} op_stack = [] postfix_list = [] token_list = expression.split() for token in token_list: if token.isalnum(): postfix_list.append(token) elif token == '(': op_stack.append(token) elif token == ')': top_token = op_stack.pop() while top_token != '(': postfix_list.append(top_token) top_token = op_stack.pop() else: # operator while op_stack and precedence[op_stack[-1]] >= precedence[token]: postfix_list.append(op_stack.pop()) op_stack.append(token) while op_stack: postfix_list.append(op_stack.pop()) return ' '.join(postfix_list) class Node: def __init__(self, value): self.value = value self.left_child = None self.right_child = None def build_expression_tree(postfix_expr): operator_stack = [] token_list = postfix_expr.split() for token in token_list: if token.isalnum(): node = Node(token) operator_stack.append(node) else: right_node = operator_stack.pop() left_node = operator_stack.pop() node = Node(token) node.left_child = left_node node.right_child = right_node operator_stack.append(node) return operator_stack.pop() def evaluate_expression_tree(node, variable_values): if node.value.isalnum(): return variable_values[node.value] else: left_value = evaluate_expression_tree(node.left_child, variable_values) right_value = evaluate_expression_tree(node.right_child, variable_values) if node.value == '!': return not left_value elif node.value == '&': return left_value and right_value elif node.value == '|': return left_value or right_value expression = "!a & (b | c)" postfix_expression = infix_to_postfix(expression) expression_tree = build_expression_tree(postfix_expression) variable_values = {'a': True, 'b': False, 'c': True} result = evaluate_expression_tree(expression_tree, variable_values) print(result)
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值