安全舞蹈
这个节点.js模块为您提供了例外安全. 这就是说 此模块的功能从未丢出.
如果你对节点感到烦恼 Js内置的API扔出例外 使用例外作为多值返回语句,此模块为您所用.
此模块在您要调用的函数中捕获任何例外 。 如果有的话 也不例外,它总是这样 如果有一个例外,它捕获 它通过错误属性(如错误)提供.
因此,与其说:
try {
var result = JSON.parse(something);
} catch (e) {
...
}
您可以写:
var result = safe.JSON.parse(something);
if (result === null) { ... }
安装
npm 安装安全带
使用量
您可以调用任意同步函数而无需担心例外.
var safeCall = require('safetydance');
var result = safeCall(function () { return 1 + 2; }); // will return 3
result = safeCall(function () { throw new Error('bad'); }); // will return null
要通过“ this” :
var obj = { a: 10 };
var result = safeCall(function () { return this.a; }.bind(obj)); // will return 10
本模块为常用功能提供方便.
var safe = require('safetydance');
var json = safe.JSON.parse('This is totally { not json }');
console.log(json); // will be null
console.log(safe.error); // will contain SyntaxError
错误被清除为操作成功 .
json = safe.JSON.parse('{ "totally" : "json" }');
console.log(json); // { totally: "json" }
console.log(safe.error); // will be null
安全. 克赖里
safe.query可用于访问嵌入对象属性. 譬如说, 如果有嵌入对象存在,下面的代码可以丢出例外 不包含访问属性 :
var capital = data.countries.norway.capital;
这可以重写为:
var capital = safe.query(data, 'countries.norway.capital'); // returns undefined if not found
您也可以指定默认 :
var capital = safe.query(data, 'countries.norway.capital', 'oslo'); // return oslo if not found
深嵌属性的工程(用于数组访问):
var item = safe.query(data, 'key[0][3].some.fancy[45].nested.5.value');
不支持其中的“.” 属性名称 .
安全设置
safe. set 是安全的. query的补充.
var obj = { };
safe.set(obj, 'some.deep.value', 42);
console.log(obj.some.deep.value); // prints 42
如果obj不是有效的对象,它会为你创建一个
obj = safe.set(null, 'some.deep.value', 42);
console.log(obj.some.deep.value); // prints 42
如果链中的任何值不是对象,则会被替换.
var obj = { some: 43 };
safe.set(obj, 'some.deep.value', 42);
console.log(obj.some.deep.value); // prints 42; some is gone
安全设置
safe.unset 未设置对象中的属性.
var obj = { some: { deep: { value: 42 } } };
safe.unset(obj, 'some.deep.value');
console.log(obj); // prints { some: { deep: { } } }
API 密码
- 安全呼叫( 函数调用, 值为如果错误返回)
- 错误 - 上次函数调用错误
- 方便(详见节点.js docs)
- JSON.parse - 在错误中返回无效, 在成功中返回对象
- JSON. stringify - 错误返回为无效, 成功返回为字符串
- fs.readFileSync - 在出错时返回无效,在成功时返回字符串/缓冲
- fs.writeFileSync - 错误返回虚假,成功返回真实
- fs.statSync - 在错误中返回无效,在成功时返回stat对象
- fs. sexicSync - 错误返回错误,真实/假返回成功
- fs.mkdirSync - 错误返回错误, 成功返回真实
- fs.unlinkSync - 错误返回虚假,成功返回真实
- fs.renameSync - 错误返回虚假,成功返回真实
- fs.copyFileSync - 在错误中返回虚假, 在成功时返回真实
- fs.readdirSync - 在错误中返回无效, 在成功时返回文件数组
- fs.utimesSync - 错误返回错误,成功返回真实
- fs.futimesSync - 错误返回错误,成功返回真实
- url.parse = 在错误中返回无效, 在成功时返回对象
- 需要 - 错误返回为无效, 成功模块
- child process.execSync - 在出错时返回无效,在成功时返回 stdio
- child process.spawnSync - 在出错时返回无效,在成功时返回对象