Sentry-javascript: apakah perlu untuk menambal monyet bawaan di * setiap * browser?

Dibuat pada 27 Apr 2017  ·  3Komentar  ·  Sumber: getsentry/sentry-javascript

Membaca intro di https://blog.sentry.io/2016/01/04/client-javascript-reporting-window-onerror.html dan melihat kode sumber raven, benar-benar diperlukan untuk polyfill onerror by monkey menambal setiap built-in dengan try/catch untuk mengambil jejak tumpukan, bahkan jika browser yang diberikan (misalnya chrome/FF) memasok objek kesalahan?

Bagi saya sepertinya memaksa browser untuk melakukan pekerjaan yang tidak perlu jika tidak harus. Atau apakah gagak melakukan hal lain yang menjamin ini?

Sunting: mungkin tidak, karena Anda sepertinya tidak melakukannya untuk raven-node.

Semua 3 komentar

Setidaknya ini tidak sepenuhnya tentang "kami membutuhkan objek kesalahan". Dalam beberapa kasus, kesalahan yang tersedia tidak dapat digunakan, dan ini termasuk browser modern seperti Firefox. Misalnya, mereka mungkin tidak menyertakan tumpukan penuh, atau mungkin ada detail yang hilang (seperti nomor kolom).

Tanda bintang besar di sini di mana saya tidak yakin ini sepenuhnya benar sampai sekarang, tetapi belum lama ini.

tl; dr apa salahnya memastikan perilaku yang dapat diprediksi, lalu berpura-pura browser tidak berubah/memiliki kebiasaan

Ini sebagian besar diperlukan untuk memastikan bahwa kesalahan yang sama menghasilkan pelacakan tumpukan yang sama persis di berbagai browser, sehingga kami dapat secara akurat mengelompokkan beberapa kejadian dari masalah yang sama di berbagai browser. Ini juga berkaitan dengan bagaimana kami mendapatkan lebih dari sekadar "Kesalahan Skrip" ketika skrip lintas-asal memunculkan kesalahan (lihat posting blog Ben tentang itu ) dan kami mengumpulkan beberapa remah roti otomatis kami dari instrumentasi ini.

Selain itu, potensi "pekerjaan yang tidak perlu" yang Anda gambarkan sangat minim, fitur yang mendeteksi perilaku window.onerror sulit dilakukan dengan bersih, dan kami lebih suka tidak mencoba menjaga matriks terbaru dari browser mana versi melakukan apa dengan window.onerror ketika kita dapat melakukan normalisasi di semua browser.

Saya harus menambahkan bahwa tanpa try/catch, kami tidak dapat menghasilkan "jejak sintetis" dalam kasus di mana objek non-kesalahan dilemparkan (misalnya throw "error" ). Jejak sintetis memungkinkan Anda melihat dari mana objek buruk itu dibuang, yang bisa menjadi sangat penting dalam melacak bug.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat