使用 zip 获取虚假光纤痕迹并进行理解
Getting a spurious fibre trace with zip and for comprehension
我刚刚开始关注 ZIO 以尝试改进我的 Scala。我已经开始尝试更新我的一些旧代码。我已经包装了一些遗留代码,这些代码 return 是一个包装在选项中的配置,我正在将其转换为 ZIO,然后我将其用于理解。
代码按预期工作,但如果我 return None
我得到:
Fiber failed.
A checked error was not handled.
None
Fiber:Id(1612612180323,1) was supposed to continue to:
a future continuation at tryzio.MyApp$.run(MyApp.scala:94)
a future continuation at zio.ZIO.exitCode(ZIO.scala:543)
Fiber:Id(1612612180323,1) execution trace:
at zio.ZIO$.fromOption(ZIO.scala:3246)
at tryzio.MyApp$.run(MyApp.scala:93)
对于 Some
和 None
,代码都按预期工作,但我收到了 None
.
的虚假光纤消息
生成这个的代码真的很简单:
def run(args: List[String]) = ({
for {
cmdln <- ZIO.fromOption(getConfig(args.toArray))
_ <- putStrLn("Model Data Builder")
_ <- putStrLn(s"\nVerbose: ${cmdln.verbose}")
} yield()
}).exitCode
但我显然漏掉了一些明显的东西!我是 ZIO 的新手,所以在解释我的不理解时请使用小词。我需要加入所有纤维吗?我试图抓住 None
然后退出但实际上我的代码从来没有 strops 运行 如果我这样做 - 很奇怪。
.exitCode
捕获到代码中未处理的错误(空配置),在 stdErr
中打印调试信息并以状态 1
退出程序。所以它按预期工作。
我同意错误消息有点误导,应该以与业务相关的内容开头,而不是 fiber failed
。
您可能会在 github.
开罚单
我刚刚开始关注 ZIO 以尝试改进我的 Scala。我已经开始尝试更新我的一些旧代码。我已经包装了一些遗留代码,这些代码 return 是一个包装在选项中的配置,我正在将其转换为 ZIO,然后我将其用于理解。
代码按预期工作,但如果我 return None
我得到:
Fiber failed.
A checked error was not handled.
None
Fiber:Id(1612612180323,1) was supposed to continue to:
a future continuation at tryzio.MyApp$.run(MyApp.scala:94)
a future continuation at zio.ZIO.exitCode(ZIO.scala:543)
Fiber:Id(1612612180323,1) execution trace:
at zio.ZIO$.fromOption(ZIO.scala:3246)
at tryzio.MyApp$.run(MyApp.scala:93)
对于 Some
和 None
,代码都按预期工作,但我收到了 None
.
生成这个的代码真的很简单:
def run(args: List[String]) = ({
for {
cmdln <- ZIO.fromOption(getConfig(args.toArray))
_ <- putStrLn("Model Data Builder")
_ <- putStrLn(s"\nVerbose: ${cmdln.verbose}")
} yield()
}).exitCode
但我显然漏掉了一些明显的东西!我是 ZIO 的新手,所以在解释我的不理解时请使用小词。我需要加入所有纤维吗?我试图抓住 None
然后退出但实际上我的代码从来没有 strops 运行 如果我这样做 - 很奇怪。
.exitCode
捕获到代码中未处理的错误(空配置),在 stdErr
中打印调试信息并以状态 1
退出程序。所以它按预期工作。
我同意错误消息有点误导,应该以与业务相关的内容开头,而不是 fiber failed
。
您可能会在 github.