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.5k
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
33
LINE開発基盤を利用した ビジネス特化型高速アプリ開発
nori3tsu
1
310
Hasuraの本番運用に向けて
nori3tsu
0
1.5k
LINE Developer Community忘年LT大会 2022 - LINE Developers News 振り返り
nori3tsu
0
260
LIFF・LINEミニアプリでApple Pay決済
nori3tsu
0
750
AWS Cloud Native イベント向けLINEボット
nori3tsu
1
390
AWSとLINE Bot Server
nori3tsu
0
630
Nuxt.jsで作るLINEボット
nori3tsu
1
750
Other Decks in Programming
See All in Programming
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
710
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
110
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
680
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
340
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
630
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
810
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
210
Is Xcode slowly dying out in 2025?
uetyo
1
240
エラーって何種類あるの?
kajitack
5
320
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
580
ReadMoreTextView
fornewid
1
490
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
48
32k
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Building Applications with DynamoDB
mza
95
6.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
940
Balancing Empowerment & Direction
lara
1
380
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Raft: Consensus for Rubyists
vanstee
140
7k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
The Invisible Side of Design
smashingmag
300
51k
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まで︕