Suche senden
Hochladen
Scalaでの例外処理
•
6 gefällt mir
•
5,708 views
Takashi Kawachi
Folgen
Scala 勉強会 in 東京 第95回で発表して来ました。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 11
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Ransui Iso
言語処理系入門6
言語処理系入門6
Kenta Hattori
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
テンプレートメタプログラミング as 式
テンプレートメタプログラミング as 式
digitalghost
90分間濃縮 PHPエラーの教室
90分間濃縮 PHPエラーの教室
Yusuke Ando
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
Ryo Suzuki
Javascript with Generative Art
Javascript with Generative Art
Shinsuke Matsuda
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
Weitere ähnliche Inhalte
Was ist angesagt?
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
Go guide for Java programmer
Go guide for Java programmer
Masaaki Yonebayashi
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
Yusuke Ando
SEH on mingw32
SEH on mingw32
kikairoya
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
Ocaml lecture slides 01 at axsh
Ocaml lecture slides 01 at axsh
Tomofumi Hayashi
Control.Arrow
Control.Arrow
haru haru
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhios
Tomohiro Kumagai
Haskellの型安全性の力よ〜参照透明性編〜
Haskellの型安全性の力よ〜参照透明性編〜
aiya000
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
静的型付け言語Python
静的型付け言語Python
kiki utagawa
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
Tomohiro Kumagai
20081120 lt11th ace
20081120 lt11th ace
Masanori Hayashi
constexpr idioms
constexpr idioms
fimbul
Visual C++で使えるC++11
Visual C++で使えるC++11
nekko1119
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
egtra
Emcpp0506
Emcpp0506
Takatoshi Kondo
関数型プログラミング in javascript
関数型プログラミング in javascript
Ryuma Tsukano
Was ist angesagt?
(20)
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Go guide for Java programmer
Go guide for Java programmer
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
PHPの教室「foreachを極める」
PHPの教室「foreachを極める」
SEH on mingw32
SEH on mingw32
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Ocaml lecture slides 01 at axsh
Ocaml lecture slides 01 at axsh
Control.Arrow
Control.Arrow
Swift 2.0 の Error Handling #yhios
Swift 2.0 の Error Handling #yhios
Haskellの型安全性の力よ〜参照透明性編〜
Haskellの型安全性の力よ〜参照透明性編〜
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
静的型付け言語Python
静的型付け言語Python
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
ジェネリック関数の呼び出され方 #cocoa_kansai
ジェネリック関数の呼び出され方 #cocoa_kansai
20081120 lt11th ace
20081120 lt11th ace
constexpr idioms
constexpr idioms
Visual C++で使えるC++11
Visual C++で使えるC++11
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
Emcpp0506
Emcpp0506
関数型プログラミング in javascript
関数型プログラミング in javascript
Andere mochten auch
例外設計における大罪
例外設計における大罪
Takuto Wada
Scalaによる型安全なエラーハンドリング
Scalaによる型安全なエラーハンドリング
TanUkkii
【アジャイルサムライ】6章_ユーザストーリーを集める
【アジャイルサムライ】6章_ユーザストーリーを集める
Akio Terayama
XP祭り2014「アジャイルを手放して得られたこと」
XP祭り2014「アジャイルを手放して得られたこと」
Yusuke Suzuki
【6章】アジャイルサムライ お題
【6章】アジャイルサムライ お題
Akio Terayama
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
makopi 23
スクラムの知られざる勘所
スクラムの知られざる勘所
Yoshifumi Tsuda
なぜアジャイル開発はうまくいかないのか #xpjug
なぜアジャイル開発はうまくいかないのか #xpjug
Yoshihito Kuranuki
文書をコードとして扱う
文書をコードとして扱う
Recruit Technologies
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計
増田 亨
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
増田 亨
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
増田 亨
Andere mochten auch
(13)
例外設計における大罪
例外設計における大罪
Scalaによる型安全なエラーハンドリング
Scalaによる型安全なエラーハンドリング
【アジャイルサムライ】6章_ユーザストーリーを集める
【アジャイルサムライ】6章_ユーザストーリーを集める
XP祭り2014「アジャイルを手放して得られたこと」
XP祭り2014「アジャイルを手放して得られたこと」
【6章】アジャイルサムライ お題
【6章】アジャイルサムライ お題
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
スクラムの知られざる勘所
スクラムの知られざる勘所
なぜアジャイル開発はうまくいかないのか #xpjug
なぜアジャイル開発はうまくいかないのか #xpjug
文書をコードとして扱う
文書をコードとして扱う
リーンなコードを書こう:実践的なオブジェクト指向設計
リーンなコードを書こう:実践的なオブジェクト指向設計
実践的な設計って、なんだろう?
実践的な設計って、なんだろう?
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
Mehr von Takashi Kawachi
例外のlogを快適に
例外のlogを快適に
Takashi Kawachi
MacroPyがすごい
MacroPyがすごい
Takashi Kawachi
Silhouette intro
Silhouette intro
Takashi Kawachi
最小 Hello World! チャレンジ
最小 Hello World! チャレンジ
Takashi Kawachi
Sbt doctest
Sbt doctest
Takashi Kawachi
Elastic beanstalk と Docker と Play
Elastic beanstalk と Docker と Play
Takashi Kawachi
やさしいIteratee入門
やさしいIteratee入門
Takashi Kawachi
Sbt lock1
Sbt lock1
Takashi Kawachi
Haskell超初心者勉強会20
Haskell超初心者勉強会20
Takashi Kawachi
Haskell超初心者勉強会17
Haskell超初心者勉強会17
Takashi Kawachi
Haskell超初心者勉強会14
Haskell超初心者勉強会14
Takashi Kawachi
Haskell超初心者勉強会11
Haskell超初心者勉強会11
Takashi Kawachi
Mehr von Takashi Kawachi
(12)
例外のlogを快適に
例外のlogを快適に
MacroPyがすごい
MacroPyがすごい
Silhouette intro
Silhouette intro
最小 Hello World! チャレンジ
最小 Hello World! チャレンジ
Sbt doctest
Sbt doctest
Elastic beanstalk と Docker と Play
Elastic beanstalk と Docker と Play
やさしいIteratee入門
やさしいIteratee入門
Sbt lock1
Sbt lock1
Haskell超初心者勉強会20
Haskell超初心者勉強会20
Haskell超初心者勉強会17
Haskell超初心者勉強会17
Haskell超初心者勉強会14
Haskell超初心者勉強会14
Haskell超初心者勉強会11
Haskell超初心者勉強会11
Kürzlich hochgeladen
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
2024 03 CTEA
2024 03 CTEA
arts yokohama
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
Sadao Tokuyama
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
Kürzlich hochgeladen
(12)
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
2024 03 CTEA
2024 03 CTEA
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
2024 04 minnanoito
2024 04 minnanoito
Scalaでの例外処理
1.
Scalaでの例外
@kawachi Thursday, January 17, 13
2.
自己紹介
• 最近興味のあること • Scala, TypeScript, iOS, golang, etc. • 興味のままに 将来性のあるプラットフォームで仕事 したい! • Scala + Elastic Beanstalk + TypeScript でお仕事中 (先週末から) Thursday, January 17, 13
3.
Scalaとの出会い
• 昨年10月 • 「Rubyのプログラムが遅いよ∼」 • 「Scalaっていうのがあるよ」 • 6倍速に • 現在 Scala 歴1ヶ月 Thursday, January 17, 13
4.
Scalaでの例外処理
• No checked exception • サボりがちですが、 別に起きなくなったわけじゃありません • Blog記事(Error Handling in Scala)の内容を紹介 http://tersesystems.com/2012/12/27/error- handling-in-scala Thursday, January 17, 13
5.
try, catch, finally
~基本~ • Java と同じ • catch は PartialFunction で書く try { f() // throw new MyException() } catch { case e: MyException => ... } finally { ... } Thursday, January 17, 13
6.
Option
~NullPointerException からの卒業~ • 値が無いかもしれないことを型で表現 • Some(A) or None • Option の敵 → Some(null) Some(possiblyNull) ではなく Option(possiblyNull) • 使い方はコレクションっぽい。Cheat sheet 参照 • http://blog.tmorris.net/posts/scalaoption-cheat-sheet/ Thursday, January 17, 13
7.
Either
~エラー応答~ • Left[L] or Right[R] • Rightに成功応答、Leftにエラー応答 • ネストが深くなる傾向あり (Either[A,Either[B,...]]) def f(): Either[FailResult, String] = if (...) Right("abc") else Left(FailResult("failed")) f().fold( error => ..., success => ... ) Thursday, January 17, 13
8.
Try
New in 2.10 From twitter.util ~Wrap Throwable~ • Failure[Throwable] or Success[T] • 例外を包む • スタックをまたげる → 非同期プログラミング object Try { def apply[T](r: => T): Try[T] = try Success(r) catch { case NonFatal(e) => Failure(e) } } Thursday, January 17, 13
9.
Try の使い方
import util.Try val sumTry = for { int1 <- Try(Integer.parseInt("1")) int2 <- Try(Integer.parseInt("2")) } yield { int1 + int2 } sumTry match { case Failure(e) => e.printStackTrace() case Success(v) => println(v) } Thursday, January 17, 13
10.
失敗からのrecover
• Failure[Throwable] を Success[T] へ var v: Try[Int] val r: Try[Int] = v.recover { case e: MyException => 100 } Thursday, January 17, 13
11.
まとめ
• 基本は try, catch, finally • Option を使えば NullPointerException がなくなる • エラー応答を返したいときは Either • 例外を包む時はTry • Futureを使った非同期プログラミングのお供に Thursday, January 17, 13
Jetzt herunterladen