0
처리되지 않은 것뿐만 아니라 처리 된 모든 Javascript 예외를 서버에 보내려고합니다. 이 문제에 대해 알려주는 window.onerror
documentation 및 also this post을 살펴 보았지만 처리되지 않은 예외에 대해서만 가장 잘 작동합니다.처리되지 않은 처리되지 않은 처리 된 Javascript 오류를 서버에 보냅니다.
window.onerror
예외가 이미 catch()
블록에서 처리되는 경우 시작되지 않습니다.
'고통스러운'방법은 내 logToServer()
기능을 내 코드의 catch()
블록에 수동으로 첨부하는 것이지만 더 나은 솔루션을 기대합니다.
아래에 약간의 스 니펫을 설정했습니다.
var logToServer = function logToServer() {
console.info('logToServer() called');
};
window.onerror = function(z, x, c, v, b) {
console.info(z);
console.info(x);
console.info(c);
console.info(v);
console.info(b);
// call a function to send to server
logToServer();
};
window.addEventListener('error', function(z, x, c, v, b) {
console.info(z);
// call a function to send to server
logToServer();
});
// test w/o catch-block
//console.info(err); // calls logToServer()
// test w/ catch-block
try {
console.info(asd); // does not call logToServer()
} catch (err) {
console.error(err);
};
Enable logs in console.
처리 된 예외의 경우 로직을 수행 한 다음 끝에 catch 블록에서 예외를 던집니다. –
왜? 어느 것이 든 * try ... catch *를 사용하면 피할 수없는 오류를 처리 할 수 있습니다. 그런 다음 이러한 오류는 *로 처리됩니다 (오류가 많은 곳이 없어야 함). 아니면 엉터리/버그가있는 코드를 처리하고 사용자가 이러한 오류나 그 결과를 보지 못하도록 * try .. catch *를 사용하십시오. 이 경우 이러한 오류를 포착하지 말고 오류를 일으키는 코드를 수정하십시오. 그래서 다시, 왜 당신은 수동적으로 로깅을 추가하는 것이 번거롭다는 것을 코드에서 너무 많은 try ... catch 블록을 가지고 있습니까? 그리고 왜 이미 처리 된 모든 오류 (서버 측)를 기록하고 싶습니까? – Thomas
@MuhammadQasim - 모든 catch 블록을 수동으로 편집하고 예외가 발생하면 내 논리를 호출하는 것을 의미합니까? 나는 그것을 할 수 있지만 모든 catch 블록을 방문하는 것은 잔인한 것처럼 보입니다. 장래에 새로운 try catch 블록이 항상 내 server-logging-logic-function을 호출해야한다는 것을 보장해야 할 필요는 없습니다. 다른 의미 있니? – Rodiwa