aboutsummaryrefslogtreecommitdiff
path: root/spec/outputs
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2022-02-21 17:08:58 +0800
committerLi Jin <dragon-fly@qq.com>2022-02-21 17:08:58 +0800
commit00acd729f39c7e6b5db35c6c8a49ba5c55382e58 (patch)
tree1338128b83f24646198def33b581979297044f63 /spec/outputs
parentb668018486572362b7cbba5257baa7a37ef8d01d (diff)
downloadyuescript-00acd729f39c7e6b5db35c6c8a49ba5c55382e58.tar.gz
yuescript-00acd729f39c7e6b5db35c6c8a49ba5c55382e58.tar.bz2
yuescript-00acd729f39c7e6b5db35c6c8a49ba5c55382e58.zip
add an extra idiom for Lua pcall / xpcall: print result if success, result = try func
Diffstat (limited to 'spec/outputs')
-rw-r--r--spec/outputs/try-catch.lua41
1 files changed, 35 insertions, 6 deletions
diff --git a/spec/outputs/try-catch.lua b/spec/outputs/try-catch.lua
index d4c02ac..692905e 100644
--- a/spec/outputs/try-catch.lua
+++ b/spec/outputs/try-catch.lua
@@ -3,23 +3,52 @@ xpcall(function()
3end, function(err) 3end, function(err)
4 return print(err) 4 return print(err)
5end) 5end)
6local success, result = xpcall(function()
7 return func(1, 2, 3)
8end, function(err)
9 return print(err)
10end)
11xpcall(func, function(err) 6xpcall(func, function(err)
12 return print(err) 7 return print(err)
13end, 1, 2, 3) 8end, 1, 2, 3)
14success, result = pcall(func, 1, 2, 3)
15pcall(function() 9pcall(function()
16 print("trying") 10 print("trying")
17 return func(1, 2, 3) 11 return func(1, 2, 3)
18end) 12end)
13do
14 local success, result = xpcall(function()
15 return func(1, 2, 3)
16 end, function(err)
17 return print(err)
18 end)
19 success, result = pcall(func, 1, 2, 3)
20end
19pcall(tb.func) 21pcall(tb.func)
20pcall(tb.func) 22pcall(tb.func)
21pcall(tb.func) 23pcall(tb.func)
22pcall((tb.func())) 24pcall((tb.func()))
23pcall(tb.func, 1) 25pcall(tb.func, 1)
24pcall(tb.func, 1) 26pcall(tb.func, 1)
27if (xpcall(func, function(err)
28 return print(err)
29end, 1)) then
30 print("OK")
31end
32if xpcall(func, function(err)
33 return print(err)
34end, 1) then
35 print("OK")
36end
37do
38 do
39 local success, result = pcall(func, "abc", 123)
40 if success then
41 print(result)
42 end
43 end
44 local success, result = xpcall(func, function(err)
45 return print(err)
46 end, "abc", 123)
47 success, result = xpcall(func, function(err)
48 return print(err)
49 end, "abc", 123)
50 if success then
51 print(result)
52 end
53end
25return nil 54return nil