Browse Source

ft: try catch catch 说明

master
SisMaker 3 years ago
parent
commit
4dea0f147e
2 changed files with 19 additions and 20 deletions
  1. +0
    -19
      src/docs/erlang/elangtrycatch说明.md
  2. +19
    -1
      src/docs/erlang/tryCatch性能说明.md

+ 0
- 19
src/docs/erlang/elangtrycatch说明.md View File

@ -1,19 +0,0 @@
# catch
catch Expr
除非评估期间发生异常,否则返回Expr的值。在这种情况下,将捕获异常。
对于类错误(即运行时错误)的异常,将返回 {'EXIT',{Reason,Stack}}。
对于类exit的异常,即返回称为exit(Term), {'EXIT',Term}的代码。
对于类throw的异常(即称为throw(Term)的代码), 将返回Term。
原因取决于发生的错误的类型, 堆栈是最近的函数调用的堆栈,
catch error会返回堆栈 性能低
catch exit/throw 不会返回堆栈 但是性能比普通函数调用低几倍
# try catch
匹配格式为Clcass:Reason:Strace 并且 使用了Strace的时候 会返回堆栈 性能 跟 catch error 差不多
如果不匹配strace或者匹配了不使用Strace, try catch exit error throw 性能跟catch exit/throw差不多, 无太大差别

+ 19
- 1
src/docs/erlang/tryCatch性能说明.md View File

@ -8,7 +8,7 @@
## catch
###catch nomal
utTc:ts(10, utTryCatchCase, loopTest, [1000000, testCatch, normal, true]). MaxTime: 74246000(ns) 0.074246(s)
utTc:ts(10, utTryCatchCase, loopTest, [1000000, testCatch, normal, true]).
SumTime: 725893000(ns) 0.725893(s)
AvgTime: 72589300.0(ns) 0.072589(s)
@ -73,5 +73,23 @@
SumTime: 1386053800(ns) 13.860538(s)
AvgTime: 1386053800(ns) 1.386054(s)
# 说明
无论catch 还是try catch 流程无异常发生时 性能与纯普通函数调用性能一致
# catch
catch Expr
除非评估期间发生异常,否则返回Expr的值。在这种情况下,将捕获异常。
对于类错误(即运行时错误)的异常,将返回 {'EXIT',{Reason,Stack}}。
对于类exit的异常,即返回称为exit(Term), {'EXIT',Term}的代码。
对于类throw的异常(即称为throw(Term)的代码), 将返回Term。
原因取决于发生的错误的类型, 堆栈是最近的函数调用的堆栈,
catch error会返回堆栈 性能低
catch exit/throw 不会返回堆栈 但是性能比纯普通函数调用低几倍
# try catch
发生异常返回匹配格式为Clcass:Reason:Strace 并且使用了Strace的时候 会返回堆栈 性能 跟 catch error 差不多
如果不匹配strace或者匹配了不使用Strace, try catch exit error throw 性能跟catch exit/throw差不多, 无太大差别

Loading…
Cancel
Save