2013-08-29 8 views
1

개발 중에 이러한 오류는 콘솔에서 발생하며 많은 오류가 내 응용 프로그램에 영향을 미치지 않습니다. 그러나 일단 프로덕션 환경에 들어가면 사소한 오류로 인해 "이 응용 프로그램이 손상되었습니다!"라는 메시지가 나타납니다. 유일한 옵션은 다시로드하는 것입니다. 왜 SproutCore가 모자 한 방울에서 내 앱을 추락 시키나요?사소한 오류로 인해 SproutCore 응용 프로그램이 손상되는 이유는 무엇입니까?

답변

2

웹 개발자는 사소한 오류가 눈에 띄지 않게하는 데 익숙합니다. 이것은 적합합니다. 단명 한 웹 사이트는 유지하기 위해 로컬 상태가 최소 인 경우가 많으므로 많은 사소한 오류가 사용자 환경에 영향을 미치지 않으므로 문제를 해결하는 데 필요한 개발 시간은 충분하지 않을 수 있습니다.

반면 응용 프로그램 개발자는 신중하게 오류를 처리하는 데 익숙합니다. 예를 들어 데스크톱 .NET 또는 Cocoa에서 운영 체제는 처리되지 않은 오류가 발생하는 응용 프로그램을 사전에 중단합니다. 이는 일반적으로 응용 프로그램이 수명이 길고 내부적으로 일관성있는 상태를 관리해야한다고 가정하기 때문입니다. 오류는이 내부 상태가 관리되지 않는 & 불안정한 상태 일 가능성이 높다는 표시이며 예기치 않은 (또는 악화 된) 동작을 방지하기 위해 응용 프로그램을 종료해야합니다.

SproutCore는 브라우저에서 사용하기위한 모든 기능을 갖춘 응용 프로그램 개발 프레임 워크 모음이며 SproutCore 웹 응용 프로그램은 수명이 긴 주로 상태 비 저장 웹 페이지와 여러 가지면에서 다릅니다. 이 논의에서 가장 중요한 것은 수명이 길고 내부 상태가 매우 뛰어나다는 점입니다. 데스크톱 응용 프로그램과 마찬가지로 처리되지 않은 오류는 SproutCore 응용 프로그램의 내부 상태가 관리되지 않고 예측할 수 없게 될 가능성이 있음을 나타냅니다. SproutCore는 특정 오류가 심각하지 않거나 문제가 있는지 여부를 판단 할 방법이 없으므로 다른 응용 프로그램 시스템과 마찬가지로 모든 작업을 중단시킵니다.

SproutCore는 오류의 원인을 조사하고 오류를 처리 할 방법을 결정할 기회를주기 위해 개발 모드에서 앱을 적극적으로 중단하지 않습니다. 따라서 강력하고 안정적인 웹 응용 프로그램을 구축하려면 콘솔을 주시하고 팝업되는 오류를 예방하거나 처리하십시오.

+0

(기본적으로 Chrome은 SproutCore가 SproutCore를 캡처하여 요청이나 데이터 소스로 전달하더라도 XHR 오류를 콘솔에보고합니다. 처리한다고 가정하면 무시해도됩니다.) – Dave

2

데이브의 대답은 완벽하지만, 난 그냥 기술적 인 세부의 한 비트를 추가 할 것입니다 : 생산 빌드에서, SproutCore를 브라우저의 자바 스크립트의 OnError 이벤트에 핸들러를 첨부

. 이렇게하면 사용자가 갑자기 모든 입력에 응답하지 않고 문제가 있다는 시각적 피드백을 얻을 수 있습니다.

그러나 일부 브라우저에서는 onerror 처리기로 인해 개발자가 원래 문제의 전체 스택 추적을 볼 수 없습니다. 따라서 개발 모드 (sc-server 또는 유사한 것을 사용)에서 핸들러는 사용되지 않으며 예외는 Sproutcore에서 전혀 다루지 않습니다. 그런 다음 브라우저는 원래의 원인을 볼 수있는 콘솔에 로그인하는 것과 같은 작업을 수행합니다. 또한 개발자 콘솔을 '잡히지 않는 예외에서 벗어나기'로 설정하여 오류가 발생한 컨텍스트를 검사 할 수 있도록하는 것이 좋습니다.

+0

if interesting if SC는 몇 가지 정보와 옵션이있는 dev-mode 오류 처리기를 추가했습니다. 또한, +1은 "처리되지 않은 오류에 대한 중단"이 가장 좋은 것입니다. – Dave