나는 다른 각도에서 제시된 문제를보기로 결정했다.
다른 주석가가 나열한 처리되지 않은 오류 개체를 부분적으로 해결하는 동안 요청 된 코드 패턴을 밀접하게 허용하는 방법을 결정할 수있었습니다.
코드는 http://jsfiddle.net/Abyssoft/RC7Nw/4/에서 볼 수 있습니다.
try : catch는 for 루프 내에 배치되어 우아한 폴 스루를 허용합니다. 필요한 모든 기능을 반복 할 수 있습니다. 명시 적 오류 처리가 필요한 경우 추가 함수 배열이 사용됩니다. 오류 처리기 요소가있는 오류 및 기능 배열에서도 함수가 아닌 경우 오류가 콘솔에 덤프됩니다.
stackoverflow의 요구 사항에 따라 여기에 코드 인라인이 있습니다. [JSLint를 준수하도록 편집 (확인을 위해 선행 공백 제거), 가독성 향상]
function func1() {"use strict"; throw "I don't return anything"; }
function func2() {"use strict"; return 123; }
function func3() {"use strict"; throw "I don't return anything"; }
// ctr = Code to Run <array>, values = values <array>,
// eh = error code can be blank.
// ctr and params should match 1 <-> 1
// Data validation not done here simple POC
function testAll(ctr, values, eh) {
"use strict";
var cb; // cb = code block counter
for (cb in ctr) {
if (ctr.hasOwnProperty(cb)) {
try {
return ctr[cb](values[cb]);
} catch (e) {
if (typeof eh[cb] === "function") {
eh[cb](e);
} else {
//error intentionally/accidentially ignored
console.log(e);
}
}
}
}
return false;
}
window.alert(testAll([func1, func2, func3], [], []));
null당신은 같은 것을 할return func1() || func2() || func3();