php代码:
try{
foo(2,function($param){
if($param==1){
throw new Exception('cathing');
}
});
}catch(Exception $e){
echo $e->getMessage();
}
function f1($v) {
return $v + $v;
}
function foo($n, $f='') {
if($n < 1) return;
for($i=0; $i<$n; $i++) {
echo $f ? $f($i) : $i;
}
}
//运行结果cathing
nodeJs代码:
const fs = require('fs');
try {
fs.readFile('/some/file/that/does-not-exist', (err, data) => {
// mistaken assumption: throwing here...
if (err) {
throw err;
}
});
} catch (err) {
// 这里不会截获回调函数中的throw
console.error(err);
}
//运行结果如下图
结论:php在函数中可以捕获到异常,node不行。node可以用以下方式捕获,也就是错误信息优先的回调模式惯例。
const fs = require('fs');
function errorFirstCallback(err, data) {
if (err) {
console.error('There was an error', err);
return;
}
console.log(data);
}
fs.readFile('/some/file/that/does-not-exist', errorFirstCallback);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。