使用:
Node .js
问题:
今天重构我的代码时,我看到了这些行。它们的有趣之处在于,try catch 中的每个替代行都可能导致异常,因此代码可能会崩溃。对于我遵循的实践,每个异常都应该专门处理,并且最少(有用)的代码行应该位于 try catch 中。作为一名程序员,我应该遵循哪种方法(A、B、或者其他)?为什么?我个人会选择 A,因为它减少了代码行数。
代码A:
function(err, someData, res){
if(err){
console.error(err);
} else{
try{
data = JSON.parse(someData); //exception expected
if(someVariable == "abc"){
var items = data['a']; //exception expected
} else if(site == "xyz"){
var items = data['b']; //exception expected
}
} catch(err){
console.error(err);
}
}
代码B:
function(err, someData, res){
if(err){
console.error(err);
} else{
try{
data = JSON.parse(someData); //exception expected
} catch(err){
console.error(err);
}
if(someVariable == "abc"){
try{
var items = data['a']; //exception expected
} catch(err){
console.error(err);
}
} else if(site == "xyz"){
try{
var items = data['b']; //exception expected
} catch(err){
console.error(err);
}
}
}
最佳答案
扭曲的A
在 "Clean Code" ,“鲍勃叔叔”马丁认为,尝试/捕获异常是一项值得其自身功能的特定任务。将真正的工作提取到一个单独的方法中。这个愚蠢的建议一开始让我咆哮,但我已经开始真正喜欢这个想法。
parseData = function(someData, res) {
data = JSON.parse(someData); //exception expected
if(someVariable == "abc"){
var items = data['a']; //exception expected
} else if(site == "xyz"){
var items = data['b']; //exception expected
}
}
tryParseData = function(err, someData, res){
if(err) {
console.error(err);
} else {
try {
parseData(someData, res);
} catch(err) {
console.error(err);
}
}
}
关于javascript - 编程标准和重构 try/catch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14277397/