많은 자바 스크립트 라이브러리와 프레임 워크는 일부 작업이 완료된 후에 호출되는 함수를 허용합니다. 예를 들면 :javascript : 콜백에서 예외를 억제하는 libs를 사용하는 방법?
chrome.storage.local.get('foo', function() { console.log("foo"); });
하지만 난 단지 등 일부 API 용의가, 캐치 위에서 언급 한 로컬 스토리지 API를 구글과 기능의 모든 예외가 호출되고 억제 것을 깨달았다. 나는 (내가 콘솔에 표시 할 ReferenceError
) 오류가 위 코드를 수정하는 경우 예를 들어, : 오류가 API부터 제기되지 않습니다
chrome.storage.local.get('foo', function() { a.b(); });
을 잡기 및 모든 오류를 무시하여 억제. 이러한 상황에서 내 코드를 디버깅하는 방법? 오류를 다시 가져 오는 방법이 있습니까? 아니면이 모든 API는 복잡한 코드와 함께 사용하기위한 것이 아니며 무엇이 실패했는지 수동으로 console.log
을 통해 디버깅해야합니까?
UPDATE
1 간단히 정말 환영하지 않는 코드의 복잡성을 추가 모든 콜백 내 자신의 시도 - 캐치를 추가. 또한, 간단한 console.log
예외가 dev 도구에 의해 캐치되어 빨간색으로 표시되고, 스택 추적이 첨부되어 있기 때문에 더 나쁩니다. 물론 이것은 모두 console.log
으로 에뮬레이트 될 수 있지만 더 복잡해집니다.
업데이트 2
는 오류를 무시하는 JS 코드에 대한 ommon 연습 것 같다, 그래서 내가 밑줄 플러그인을 추가하고 각 콜백 봉투이를 사용하여 추한 솔루션을 구현하도록 강요했다 :
function _safeblock(block)
{
console.assert(block);
return function() {
try {
block.apply(this, arguments);
}
catch(e) {
console.log(e.message, e.stack);
}
};
}
function _safecall(block)
{
console.assert(block);
_safeblock(block)();
}
_.mixin({
safeblock: _safeblock,
safecall: _safecall,
});
이 문제를 해결하기 위해 무엇을 했습니까? –
@BenjaminGruenbaum 각 타사 콜백을 안전 코드로 묶어 추악한 솔루션을 구현했습니다. 그러나 이는 단지 일시적인 해킹 일 뿐이며 적절한 아키텍처 솔루션이 아닙니다. – grigoryvp