Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
vueのエラーハンドリングについて調べた件
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
morimorikochan
July 26, 2019
Technology
1.5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
vueのエラーハンドリングについて調べた件
VuejsOsaka#2でLTした内容です。
こっちにも書く予定です→
https://morimori-kochan.hatenablog.com/
morimorikochan
July 26, 2019
More Decks by morimorikochan
See All by morimorikochan
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
1.3k
Claude in Chromeで始める自律的フロントエンド開発
diggymo
1
1.1k
HonoとJSXを使って管理画面をサクッと型安全に作ろう
diggymo
0
540
バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門
diggymo
3
770
LIFF CLIとngrokを使ったLIFF/LINEミニアプリのお手軽実機確認
diggymo
0
1.1k
TypeScriptでモジュラーモノリスやってみた
diggymo
0
720
DynamoDBの"Replacement"時にデータが消されないようにCustom Resource Provider Frameworkでカスタムリソース作ってみた件
diggymo
1
1.4k
過去のインプットとアウトプットを振り返る
diggymo
0
490
Amazon BedrockとPR-Agentでコードレビュー自動化に挑戦・実際に運用してみた
diggymo
0
3.2k
Other Decks in Technology
See All in Technology
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
120
多層防御と最⼩権限で実現する、安全なAIエージェント設計パターン
lycorptech_jp
PRO
1
280
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
210
Claude in Chrome 入門 / Introduction to Claude in Chrome
cielo1985
0
640
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
210
「図書館」という名前のままでいいのか -Code4Lib JAPANカンファレンス2026 アンカンファレンス報告- / Code4Lib JAPAN Conference 2026: Unconference Report
ykiyota
0
170
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
170
Sigmaで作る業務アプリ
kazushiro_honma
0
120
omasushiというライブラリを作った
polidog
PRO
0
210
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
350
AIオーケストレーションを活用した 開発ワークフローの設計と実践
bqnq
0
160
ASTを使って影響範囲を特定する
nealle
0
180
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
350
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Designing Experiences People Love
moore
143
24k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
370
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
How to build a perfect <img>
jonoalderson
1
6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
830
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Transcript
vueͷ ΤϥʔϋϯυϦϯάʹ͍ͭͯௐͨ݅ morifuji kodai @marooon88
ྲྀΕ • ୭ʁ • ͜͏͍͏ͷͳ͍Ͱ͔͢ʁ • Ͳ͜Ͱݕ͢Δͷʁʁ • Ͳ͜ʹू͢Δͷʁʁ •
·ͱΊ
• ໊લ ◦ morifuji ◦ twitter : @marooon88 ! ࣄ
◦ atmaגࣜձࣾ ◦ PHP/Nodejs αʔόʔαΠυΤϯδχΞ • झຯ ◦ kotlin ◦ switchͷΠϯσΟʔήʔϜ ▪ katana zero ▪ The friends of Ringo Ishikawa ୭ʁ
αʔόʔαΠυΤϯδχΞɾϑϩϯτΤϯυΤϯδχΞ ઈࢍ࠾༻த ϦϞʔτϫʔΫ੍ʢݱࡏि̎·ͰʣϑϨοΫελΠϜ, ॻ੶ิॿ, ϑϦʔΞυϨε,ʑ... ୭ʁ
͜͏͍͏ͷͳ͍Ͱ͔͢ʁ ͱ͋ΔϑϩϯτΤϯυͷҊ݅
͜͏͍͏ͷͳ͍Ͱ͔͢ʁ ͳΜ͔τοϓϖʔδͰ ϩʔσΟϯά͕ࢭ·Μ ͳ͍Α ΫϥΠΞϯτ
͜͏͍͏ͷͳ͍Ͱ͔͢ʁ ͳΜ͔τοϓϖʔδͰ ϩʔσΟϯά͕ࢭ·Μ ͳ͍Α ΉΉɻίϯιʔϧͷϩ άݟͤͯΒ͑·ͤΜ ͔ʁ ΫϥΠΞϯτ
͜͏͍͏ͷͳ͍Ͱ͔͢ʁ ͳΜ͔τοϓϖʔδͰ ϩʔσΟϯά͕ࢭ·Μ ͳ͍Α ΉΉɻίϯιʔϧͷϩ άݟͤͯΒ͑·ͤΜ ͔ʁ ɻɻɻʢūŬŘŕũƃŦƄŠŘŨʣ ΫϥΠΞϯτ
͜͏͍͏ͷͳ͍Ͱ͔͢ʁ ͳΜ͔τοϓϖʔδͰ ϩʔσΟϯά͕ࢭ·Μ ͳ͍Α ΉΉɻίϯιʔϧͷϩ άݟͤͯΒ͑·ͤΜ ͔ʁ φχϮΠοςϧΧ ϫΧϥφΠ ΫϥΠΞϯτ
͕࣌ؒແବʹফ͑Δ
ͦͦ αʔόʔͷΤϥʔΛݕ͢ΔͳΒ ϑϩϯτͷΤϥʔݕ͖͢Ͱʁ
ͦͦ αʔόʔͷΤϥʔΛݕ͢ΔͳΒ ϑϩϯτͷΤϥʔݕ͖͢Ͱʁ ͬͯΈͨ
Ͳ͜Ͱݕ͢Δͷʁʁ • window.onerror • errorCaptured • Vue.config.errorHandler Ͳ͜ʹू͢Δͷʁʁ • googleAnalyticsͰΠϕϯτऩू
• τϥοΩϯάઐ༻αʔϏε
Ͳ͜Ͱݕ͢Δͷʁʁ • window.onerror • errorCaptured • Vue.config.errorHandler Ͳ͜ʹू͢Δͷʁʁ • googleAnalyticsͰΠϕϯτऩू
• τϥοΩϯάઐ༻αʔϏε
javascriptͷΤϥʔΛvueʹݶΒͣશͯΩϟον͢ΔϦεφʔ window.onerror https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/ onerror#window.onerror
֤componentͷதͰerrorΛ catch͢ΔΈ errorCaptured https://vuejs.org/v2/api/#errorCaptured
VueͷάϩʔόϧͰerrorΛcatchͰ͖ΔΈ Vue.config.errorHandler https://vuejs.org/v2/api/#errorHandler
VueͷάϩʔόϧͰerrorΛcatchͰ͖ΔΈ config.errorHandler https://vuejs.org/v2/api/#errorHandler errorCaptured ͱ Vue.config.errorHandler Ұॹ͡ΌͶʁ
component ࢠcomponent̍ errorCaptured() errorCaptured() ࢠcomponent̎ errorCaptured() Vue.config.errorHandler() errorCaptured VS Vue.config.errorHandler
component ࢠcomponent̍ errorCaptured() errorCaptured() ࢠcomponent̎ errorCaptured() Vue.config.errorHandler() errorCaptured VS Vue.config.errorHandler
ࢠcomponent̍ͰΤϥʔൃੜ
component ࢠcomponent̍ errorCaptured() errorCaptured() ࢠcomponent̎ errorCaptured() Vue.config.errorHandler() • ࣗ(ࢠcomponent̍)ͷerrorCaptured()ൃՐ͠ͳ͍ •
componentnͷerrorCaptured()͕ൃՐ͢Δ • ࠷ऴతʹVue.config.errorHandler()͕ൃՐ͢Δ errorCaptured VS Vue.config.errorHandler ࢠcomponent̍ͰΤϥʔൃੜ
errorCaptured VS Vue.config.errorHandler component ࢠcomponent̍ errorCaptured() errorCaptured() ࢠcomponent̎ errorCaptured() Vue.config.errorHandler()
ࢠcomponent̍ͰΤϥʔൃੜ • ࣗ(ࢠcomponent̍)ͷerrorCaptured()ൃՐ͠ͳ͍ • componentnͷerrorCaptured()͕ൃՐ͢Δ • ࠷ऴతʹVue.config.errorHandler()͕ൃՐ͢Δ falseΛฦ͢͜ͱͰ ͷΛࢭΊΔ͜ͱՄೳ
https://wizardly-curran-897be7.netlify.com/
ൺֱ ίϯϙʔωϯτʹΑͬͯΤϥʔऩूॲཧΛ͚͍ͨ ຊ࣭తʹΤϥʔͰͳ͍ͷͰѲΓͭͿ͍ͨ͠ →errorCaptured ΤϥʔऩूॲཧΛ̍ՕॴͰ͍ͨ͠ →Vue.config.errorHandler
Ͳ͜Ͱݕ͢Δͷʁʁ • window.onerror • errorCaptured • Vue.config.errorHandler Ͳ͜ʹू͢Δͷʁʁ • googleAnalytics
• ϩάऩूαʔϏε ◦ Sentry←https://sentry.io/for/vue/ ◦ Rollbar←https://rollbar.com/blog/error-tracking-vue-js/
Ͳ͜Ͱݕ͢Δͷʁʁ • window.onerror • errorCaptured • Vue.config.errorHandler Ͳ͜ʹू͢Δͷʁʁ • googleAnalytics
• ϩάऩूαʔϏε ◦ Sentry←https://sentry.io/for/vue/ ◦ Rollbar←https://rollbar.com/blog/error-tracking-vue-js/
googleAnalytics
googleAnalytics ݴΘͣͱΕͨΞΫηεղੳπʔϧɻ ͢ͰʹgoogleAnalyticsΛಋೖ͍ͯ͠Δঢ়ଶͩͱҎԼͷίʔυͰΤϥʔΛऩूͰ͖ Δ
googleAnalytics ݴΘͣͱΕͨΞΫηεղੳπʔϧɻ ͢ͰʹgoogleAnalyticsΛಋೖ͍ͯ͠Δঢ়ଶͩͱҎԼͷίʔυͰΤϥʔΛऩूͰ͖ Δ
googleAnalytics Vue.config.errorHandlerͰ༻͢Δ߹↓
ऩूͨ݁͠Ռ
googleAnalytics • Ұߦͷจࣈྻ͔͠ૹ৴Ͱ͖ͳ͍͠ɺ࠷େ150όΠτ·Ͱ ◦ ελοΫτϨʔεͱ͔lineNoͱ͔จࣈྻʹؚΊͯࣗͰύʔε͠ͳ͚ΕͳΒͳ͍ • UserAgentઃఆ࣍ୈͰӾཡͰ͖Δ
Sentry
ݴΘͣͱΕͨϩάऩूπʔϧɻҎԼͷίʔυΛΤϯτϦʔϑΝΠϧʹॻ͚ͩ͘ ͰOK Sentry
ΤϥʔΛࣗલͰѲΓͭͿ͍͚ͯ͠ͳ͍ Sentry
ऩूͨ݁͠Ռ
Sentry σϞ→https://sentry.io/organizations/morimorikochanco/issues/?project=1514164
Sentry σϞ→https://sentry.io/organizations/morimorikochanco/issues/?project=1514164 IP↓ ϒϥβ↓ OS↓ ελοΫτϨʔε↓ Ϣʔβʔͷૢ࡞↓
Sentry σϞ→https://sentry.io/organizations/morimorikochanco/issues/?project=1514164 IP↓ ϒϥβ↓ OS↓ ελοΫτϨʔε↓ Ϣʔβʔͷૢ࡞↓ Ůਃ
ൺֱ googleAnalyticsͷଞͷࢦඪͱ࿈ܞ͍ͨ͠ →googleAnalytics ໘ͳΤϥʔϋϯυϥʔͷઃఆল͖͍ͨ ΤϥʔΛλεΫԽͯ͠ཧ͍ͨ͠ IPɾUserAgentɾελοΫτϨʔεɾϔομʔશͯݟ͍ͨ →Sentry
·ͱΊ ݕ • ແʹΤϥʔΛݕ͢ΔͳΒVue.config.errorHandler • ඞཁ͕͋ΔͳΒerrorCaptured ू • Sentry࠷ڧͰʁ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ࢀߟࢿྉ • vueͷerrorHandlerʹ͍ͭͯ→https://vuejs.org/v2/api/#errorHandler • vueͷerrorCapturedʹ͍ͭͯ→https://vuejs.org/v2/api/#errorCaptured • gaͷྫ֎ॲཧʹ͍ͭͯ→https://developers.google.com/analytics/devguides/collection/analyticsjs/exceptions • sentryͱvueʹ͍ͭͯ→https://sentry.io/for/vue/
ςετɾݕূ • ݕূ༻vuejsαΠτ→https://wizardly-curran-897be7.netlify.com/ ·ͱΊ