2009-07-08 7 views
6

일부 고급 기능 (DOM 조작, AJAX, 플래시 통신 등)에 의존하는 DHTML/Javascript 응용 프로그램을 개발 중입니다. 저는 기능에 대해 매우 염려합니다. 문제가 발생하면 응용 프로그램을 배포 한 후에도 왜 그리고 어떻게 수정해야하는지 알고 싶습니다. 또한 사용자가 계속 사용할 수 있는지 확인하려고합니다. 예외가 심각하면 기능이 축소 된 응용 프로그램입니다.강력한 자바 스크립트 예외 처리

현재 로깅 및 예외 처리 시스템을 구축하여 함수에서 로그를 생성 할 수 있으며 예외가 잡히면 모든 로그가 전자 메일로 전송됩니다. 이 시스템은 잘 작동하지만보다 강력하게 만들고 싶습니다. 나는 제안을 찾고있다.

내가 가진 한 가지 아이디어는 try/catch 블록에있는 모든 javascript 함수의 본문을 래핑하고 예외를 catch하면 함수의 이름을 기록한 다음 전역 처리기에 오류를 던집니다. 하지만 예외가 발생한 함수를 추적하는 코드가 많습니다. 런타임 예외를 쉽게 찾고 재생산하기위한 아이디어가 있습니까?

답변

4

오히려 N 기능에 N 시도/catch 블록을 추가 다루는 것보다, window.onerror 이벤트를 사용하는 것이 더 쉬울 수 있습니다.

자바 스크립트 키트에는 a series of examples이 있습니다. 특히 3rd : 당신은 스택 추적을 원하는 경우

window.onerror = function (msg, url, line) { 
    alert('Error message: ' + msg + '\nURL: ' + url + '\nLine Number: ' + line); 
    return true; 
} 

, 당신은 Eric Wendelin's (또는 Luke Smith's update)를 확인 할 수 있습니다. 그것은 크로스 브라우저에서 작동하려는 시도 중 몇 가지가 알고있는 것 중 하나입니다.

+1

사실은 이미 내 gloabl 예외 처리기로 모든 예외를 잡으려고하고 또한 그의 스택 추적을 사용하고 있습니다 ... 문제는 IE에서 (대부분의 오류가 발생하는 곳) 추적은 "익명 함수"의 긴 목록입니다. 그리고 예외가 실제로 어디에서 발생했는지에 대한 단서를 실제로주지는 못합니다 ... – Josh

+0

아무도이 답변을 ... 그래서 당신의 대답은 최고의 것 같아요 :-) – Josh

+0

@ Josh - 나는'window .onerror'는 jQuery 이벤트 핸들러에서 에러를 잡아 내지 못할 수도 있습니다. - @stackoverflow.com/questions/205688/javascript-exception-handling – ripper234