Skip to content

Latest commit

 

History

History
58 lines (46 loc) · 1.09 KB

12.5.md

File metadata and controls

58 lines (46 loc) · 1.09 KB

失敗時も処理する場合

> c "12.5.exs"
[MyCase]
> MyCase.open_file "12.5-1.exs"
defmodule MyCase do

:ok
> MyCase.open_file "12.5-1.exss"
Couldn't open 12.5.exss: enoent
:ok

失敗時に例外を発生させる場合

> c "12.5-2.exs"
[MyCase]
> MyCase.open_file()
** (RuntimeError) Failed to open config file: enoent
    12.5-2.exs:7: MyCase.open_file/0

エラーを明示的に扱わない場合

  • パターンマッチ失敗 => MatchError発生
> c "12.5-3.exs"
[MyCase]
> MyCase.open_file()
defmodule MyCase do

:ok
> MyCase.open_file_not_exist()
** (MatchError) no match of right hand side value: {:error, :enoent}
    12.5-3.exs:8: MyCase.open_file_not_exist/0

open! を使う場合

> c "12.5-4.exs"
[MyCase]
> MyCase.open_file()
defmodule MyCase do

:ok
> MyCase.open_file_not_exist()
** (File.Error) could not open "config_file": no such file or directory
    (elixir) lib/file.ex:1317: File.open!/2
    12.5-4.exs:8: MyCase.open_file_not_exist/0

末尾に ! が付いた関数

  • エラー時に例外を発生する
  • 詳しいメッセージが表示される