質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

2回答

635閲覧

go 関数以外のエラーハンドリング

hiroshi77

総合スコア12

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2021/12/28 11:46

編集2021/12/28 11:50

golangでエラーハンドリングする時に、関数使用時以外の時のエラーハンドリング方法が分かりません。関数使用時のように、変数, err := open("~")としてerrに内容を入れるというのは分かるのですが、それ以外の例えば文字列型の変数に整数を入れてしまう時に、プログラムを終了させないでエラーハンドリングする方法が調べても出てこなかったので、ご教授ください。

例えば下記のような場合、どのようにエラーをハンドルすればよろしいでしょうか。pythonなら「 moji = 12 」のところをtry exceptで囲んでエラーの処理をしますが、goの場合はどのようにしたら良いでしょうか?

go

1 2package main 3 4import ( 5 "fmt" 6) 7 8func main() { 9 moji := "文字" 10 11 moji = 12 12 13} 14 15 16 17 18

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

  • 例の条件の場合について

例の場合は nobonobo さんのおっしゃる通り、実行の前にコンパイルが通らずに実行すること自体出来ません
Go は静的型付け言語のため、宣言と異なる型に別の型の値を代入することができません。

  • 実行時のエラー(?)の処理について

python だと try exceptで囲んで

大域脱出というのを考えると、
Go には例外という仕組みはありませんが、panic という仕組みがあります

そういう場合は recover() を使って panic を捕まえて処理することになると思います。
ただ、panic はエラーというより、異常な使われ方をした時の欠陥なので、
アプリケーション側で捕まえるのはよくないかもしれません
(そもそもライブラリ・関数から panic を呼ばれないように検査してから呼び出すなどの実装するほうが良いかなと思っています)

その他は関数から error が返ってくると思っていいと考えられますので、
理解されているエラーハンドリングで問題ないかと思います。

投稿2021/12/30 04:52

kiino

総合スコア557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

実際にコンパイルしてみましょう。
コンパイルエラーになり実行することはできないはずです。

投稿2021/12/28 15:08

nobonobo

総合スコア3367

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問