Syntax 在Elixir中省略'try'的正确语法
我目前正在使用长生不老药官方指南学习长生不老药。我正在研究错误处理部分,遇到了某些部分 有时,您可能希望在一次尝试中包装函数的整个主体 构造,通常是为了保证某些代码在以后执行。 在这种情况下,Elixir允许您省略try行: 我很好奇,如果我不省略Syntax 在Elixir中省略'try'的正确语法,syntax,elixir,Syntax,Elixir,我目前正在使用长生不老药官方指南学习长生不老药。我正在研究错误处理部分,遇到了某些部分 有时,您可能希望在一次尝试中包装函数的整个主体 构造,通常是为了保证某些代码在以后执行。 在这种情况下,Elixir允许您省略try行: 我很好奇,如果我不省略try语法,正确的语法是什么。到目前为止,我最好的猜测如下,但这似乎不是一个正确的方法 iex> defmodule RunAfter do ...> try do ...> def without_even_tryin
try
语法,正确的语法是什么。到目前为止,我最好的猜测如下,但这似乎不是一个正确的方法
iex> defmodule RunAfter do
...> try do
...> def without_even_trying do
...> raise "oops"
...> end
...> after
...> IO.puts "cleaning up!"
...> end
...> end
试试看。。。之后末端应位于def内:
iex(1)> defmodule RunAfter do
...(1)> def without_even_trying do
...(1)> try do
...(1)> raise "oops"
...(1)> after
...(1)> IO.puts "cleaning up!"
...(1)> end
...(1)> end
...(1)> end
iex(2)> RunAfter.without_even_trying
cleaning up!
** (RuntimeError) oops
iex:4: RunAfter.without_even_trying/0
您的第二个代码也是有效的,但它将截获在编译时定义方法时抛出的错误:
iex(1)> defmodule RunAfter do
...(1)> try do
...(1)> def without_even_trying do
...(1)> raise "oops"
...(1)> end
...(1)> raise "at compile time"
...(1)> after
...(1)> IO.puts "cleaning up!"
...(1)> end
...(1)> end
cleaning up!
** (RuntimeError) at compile time
iex:6: (module)
iex(1)> RunAfter.without_even_trying
** (UndefinedFunctionError) function RunAfter.without_even_trying/0 is undefined (module RunAfter is not available)
RunAfter.without_even_trying()
试试看。。。之后末端应位于def内:
iex(1)> defmodule RunAfter do
...(1)> def without_even_trying do
...(1)> try do
...(1)> raise "oops"
...(1)> after
...(1)> IO.puts "cleaning up!"
...(1)> end
...(1)> end
...(1)> end
iex(2)> RunAfter.without_even_trying
cleaning up!
** (RuntimeError) oops
iex:4: RunAfter.without_even_trying/0
您的第二个代码也是有效的,但它将截获在编译时定义方法时抛出的错误:
iex(1)> defmodule RunAfter do
...(1)> try do
...(1)> def without_even_trying do
...(1)> raise "oops"
...(1)> end
...(1)> raise "at compile time"
...(1)> after
...(1)> IO.puts "cleaning up!"
...(1)> end
...(1)> end
cleaning up!
** (RuntimeError) at compile time
iex:6: (module)
iex(1)> RunAfter.without_even_trying
** (UndefinedFunctionError) function RunAfter.without_even_trying/0 is undefined (module RunAfter is not available)
RunAfter.without_even_trying()
我认为您在描述中缺少的部分,特别是“您可能希望包装函数的整个主体”。您正在包装声明:)我认为您在描述中缺少的部分,特别是“您可能希望包装函数的整个主体”。您正在包装声明:)