Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Vue.js-Nuxt.jsのグローバルエラーハンドリング実装.pdf
Search
Norimitsu Yamashita
October 10, 2019
Programming
1
4.6k
Vue.js-Nuxt.jsのグローバルエラーハンドリング実装.pdf
Norimitsu Yamashita
October 10, 2019
Tweet
Share
More Decks by Norimitsu Yamashita
See All by Norimitsu Yamashita
セキュアに実装するLINEログイン
nori3tsu
0
36
LINE開発基盤を利用した ビジネス特化型高速アプリ開発
nori3tsu
1
340
Hasuraの本番運用に向けて
nori3tsu
0
1.6k
LINE Developer Community忘年LT大会 2022 - LINE Developers News 振り返り
nori3tsu
0
280
LIFF・LINEミニアプリでApple Pay決済
nori3tsu
0
810
AWS Cloud Native イベント向けLINEボット
nori3tsu
1
400
AWSとLINE Bot Server
nori3tsu
0
640
Nuxt.jsで作るLINEボット
nori3tsu
1
790
Other Decks in Programming
See All in Programming
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
170
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.6k
株式会社 Sun terras カンパニーデック
sunterras
0
2k
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
220
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
140
API Platformを活用したPHPによる本格的なWeb API開発 / api-platform-book-intro
ttskch
1
130
RubyとGoでゼロから作る証券システム: 高信頼性が求められるシステムのコードの外側にある設計と運用のリアル
free_world21
0
260
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
350
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
370
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
320
AHC061解説
shun_pi
0
350
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
A better future with KSS
kneath
240
18k
Designing Powerful Visuals for Engaging Learning
tmiket
0
270
Design in an AI World
tapps
0
170
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
140
For a Future-Friendly Web
brad_frost
183
10k
Producing Creativity
orderedlist
PRO
348
40k
Agile that works and the tools we love
rasmusluckow
331
21k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
440
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Transcript
Copyright ©2019 Grandream Inc. All Rights Reserved. Meguro.es # 23
@ Wantedly, Inc. Vue.js / Nuxt.js の グローバルエラーハンドリング実装
- 2 - Copyright ©2019 Grandream Inc. All Rights Reserved.
⾃⼰紹介 @nori3tsu ⼭下 徳光 / Norimitsu Yamashita ⽬⿊⻄⼝にある 株式会社グランドリーム という会社をやってます。 SPA/PWA+AWSサーバーレスを活⽤したアプリ開発が得意です。 最近は、クライアント/サーバーのコードにTypeScriptを使ってい ます。 norimitsu.yamashita nori3tsu
- 3 - Copyright ©2019 Grandream Inc. All Rights Reserved.
1, メソッド定義のエラーハンドリングの課題 2, 課題1の解決⽅法 – カスタムエラークラス 4, 課題2の解決⽅法 – グローバルエラーハンドリング 5, Vue.js / Nuxt.js に組み込む 6, まとめ
- 4 - Copyright ©2019 Grandream Inc. All Rights Reserved.
1, メソッド定義のエラーハンドリングの課題
- 5 - Copyright ©2019 Grandream Inc. All Rights Reserved.
1, メソッド定義のエラーハンドリングの課題 メソッド内に定義されたエラーハンドリング:
- 6 - Copyright ©2019 Grandream Inc. All Rights Reserved.
1, メソッド定義のエラーハンドリングの課題 課題1: エラー判定処理が散らばる マジックナンバー、可読性が悪い
- 7 - Copyright ©2019 Grandream Inc. All Rights Reserved.
1, メソッド定義のエラーハンドリングの課題 課題2: エラーハンドリング後の処理が散らばる 様々な場所に同じ業務処理があると、 コードの変更に弱くなる。
- 8 - Copyright ©2019 Grandream Inc. All Rights Reserved.
1, メソッド定義のエラーハンドリングの課題 • 課題1: エラー判定処理が散らばる • -> カスタムエラークラスの作成 • 課題2: エラーハンドリング後の処理が散らばる • -> グローバルエラーハンドリング
- 9 - Copyright ©2019 Grandream Inc. All Rights Reserved.
1, メソッド定義のエラーハンドリングの課題 Before: メソッド内に定義されたエラーハンドリングが…
- 10 - Copyright ©2019 Grandream Inc. All Rights Reserved.
1, メソッド定義のエラーハンドリングの課題 After: グローバルエラーハンドリングでスッキリ︕︕
- 11 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装
- 12 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 課題1: エラー判定処理が散らばる
- 13 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 Web API 通信処理を例にとって説明します。
- 14 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 Web API 通信処理で発⽣するエラーは どんなものがあるでしょうか︖ HTTPステータスコード
- 15 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 HTTPステータスコードは、HTTPにおいて Webサーバからのレスポンスの意味を表現す る3桁の数字からなるコードである。 Wikipedia
- 16 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 異常系 HTTPステータスの分類 • クライアントエラー • 400 Bad Request(⼊⼒値不正エラー) • 401 Unauthorized(認証エラー) • 403 Forbidden(アクセス権限エラー) • 404 Not Found(NotFoundエラー) • 409 Conflict(競合エラー)
- 17 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 • サーバーエラー • 500 Internal Server Error(内部システム エラー) • 503 Service Unavailable(サービス利⽤不 可エラー)
- 18 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 Web API 通信処理のカスタムエラークラスの実装 https://github.com/necojackarc/extensible-custom-error
- 19 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 Web API 通信処理のエラー処理を拡張
- 20 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 Before: マジックナンバーの判定処理が…
- 21 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 After: エラークラスの判定に︕
- 22 - Copyright ©2019 Grandream Inc. All Rights Reserved.
3, 課題2の解決⽅法 – グローバルエラーハン ドリング
- 23 - Copyright ©2019 Grandream Inc. All Rights Reserved.
2, 課題1の解決⽅法 – カスタムエラークラスの実装 課題2: エラーハンドリング後の処理が散らばる
- 24 - Copyright ©2019 Grandream Inc. All Rights Reserved.
3, 課題2の解決⽅法 – グローバルエラーハンドリング Vue.js で発⽣するエラーのハンドリング⽅法 1. Vue.js 内で発⽣したエラー • data, computed, methods 等 2. Vue.js 外で発⽣したエラー • インスタンス変数の初期化 等 3. Promise.rejected エラー • ⾮同期処理エラーのキャッチ漏れ
- 25 - Copyright ©2019 Grandream Inc. All Rights Reserved.
3, 課題2の解決⽅法 – グローバルエラーハンドリング 具体的なハンドリング⽅法
- 26 - Copyright ©2019 Grandream Inc. All Rights Reserved.
3, 課題2の解決⽅法 – グローバルエラーハンドリング Vue.jsのグローバルエラーハンドリングとは…︖ Vue.jsで発⽣する 3パターンのエラーを処理する 共通関数処理のこと。
- 27 - Copyright ©2019 Grandream Inc. All Rights Reserved.
3, 課題2の解決⽅法 – グローバルエラーハンドリング エラー処理の共通関数を⽤意して
- 28 - Copyright ©2019 Grandream Inc. All Rights Reserved.
3, 課題2の解決⽅法 – グローバルエラーハンドリング 各種エラーハンドラーで呼び出す = グローバルエラーハンドリング
- 29 - Copyright ©2019 Grandream Inc. All Rights Reserved.
4, Vue.js / Nuxt.js に組み込む
- 30 - Copyright ©2019 Grandream Inc. All Rights Reserved.
4, Vue.js / Nuxt.js に組み込む Vue.js に組み込む:
- 31 - Copyright ©2019 Grandream Inc. All Rights Reserved.
4, Vue.js / Nuxt.js に組み込む Nuxt.jsに組み込む: ~plugins/error-handler.js
- 32 - Copyright ©2019 Grandream Inc. All Rights Reserved.
5, まとめ
- 33 - Copyright ©2019 Grandream Inc. All Rights Reserved.
5, まとめ • グローバルエラーハンドリング • 可読性・メンテナンス性の向上 • Vue.js / Nuxt.js では Plugins を利⽤
- 34 - Copyright ©2019 Grandream Inc. All Rights Reserved.
さいごに… • ⼀緒に働いてくれるエンジニア仲間 • 下記の技術を使ったお仕事 • TypeScript • Vue.js / Nuxt.js • SPA / PWA / BFF / API • AWSサーバーレス ⼤募集中︕︕
- 35 - Copyright ©2019 Grandream Inc. All Rights Reserved.
ご清聴 ありがとうございました 開発のご相談はHPまで︕