post Image
猿がついに理解できたSwiftのthrow・do・try・catchの意味

Swiftでthrow・try・do・catchとか出てくるけど、エラー処理とかやったことなかったから、概念そのものがずっと分からなかった

Qiitaでもいろんな記事があるけど、概念が理解できないと猿の脳みそでは全く理解できない

しかし、このままでは嫌だなと思ったので、そもそもNSErrorってなんなんだ?NSExceptionってなんなんだ?と思いながら、記事をたどって行ったら、throw try do catchなどを分かりやすく説明してくれている記事に遭遇した。

プログラミング入門(例外処理)
(サンプルはJavaですが、概念を理解する上では問題ありませんでした)

もともと猿は文字を読むのが苦手だが、丁寧に読んでみたら理解できた。


そして概念を理解した上でQiitaにあったこの記事を読んだら、驚くほど意味が分かるようになった!
Swift 3.0 エラー処理入門


猿的な理解によればこういうことらしい。

まず、世の中には予想通りの処理ができなかった時にはエラー(Error)や例外(Exception)というものを返してくれるメソッドというものがあるらしい。

こんな姿をしている。

func methodA(text: String) throws {
    if text.isEmpty {
        throw NSError(domain: "errorメッセージ", code: -1, userInfo: nil)
    }
    print(text)
}

メソッド名の最後についているthrowsというのは「このメソッドは例外とかエラーとかを返す可能性があるメソッドだよ」と教えてくれている。
func methodA(text: String) throws {

このthrowsが付いているメソッドを使う時にはエラーや例外が返ってくる可能性があるので、エラーや例外が返ってくる場合に備えて、doとかtryとかcatchを使わないといけないらしいのだ。

それはこんな姿をしている。

func method() {
    do {
        try methodA()
    } catch {
        // エラー処理
    }
}

throwsの付いているmethodAを使う時には呼び出す前にtryをつける必要がある

使う場所はdoで囲み、後ろにはcatchをつける。
そうするとcatchの中にはmethodAでエラーが投げられた場合に(throwされた場合に)して欲しい処理が書ける。

これがthrow -> do -> try -> catch という一連の野球用語的な呪文の意味だ(正しい理解であることを願う)。


再度言うが、これが分かった途端にQiitaの この記事 が驚くほど理解できるようになった。

猿でも分かる記事を書いてくれたお二方には深い感謝の意を評したい。


『 Swift 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。