Ring/Lessons/Eval() 和调试
外观
< Ring
在本节中,我们将学习
- 使用 Try/Catch/Done 处理错误
- Eval() 函数
- Raise() 函数
- Assert() 函数
语法
Try
Statements...
Catch
Statements...
Done
Try 块中的语句将被执行,如果发生任何错误,则 catch 块中的语句将被执行。
在 catch 块中,我们可以使用变量 cCatchError 获取错误消息。
例子
Try
see 5/0
Catch
see "Catch!" + nl + cCatchError
Done
输出
Catch!
Error (R1) : Cann't divide by zero !
我们可以使用 Eval() 函数在运行时从字符串执行代码。
语法
Eval(cCode)
例子
Eval("nOutput = 5+2*5 " )
See "5+2*5 = " + nOutput + nl
Eval("for x = 1 to 10 see x + nl next")
Eval("func test see 'message from test!' ")
test()
输出
5+2*5 = 15
1
2
3
4
5
6
7
8
9
10
message from test!
我们可以使用 Raise() 函数引发异常。
语法
Raise(cErrorMessage)
该函数将显示错误消息,然后结束程序的执行。
我们可以使用 Try/Catch/Done 避免 raise() 函数生成的异常。
例子
nMode = 10
if nMode < 0 or nMode > 5 raise("Error : nMode not in the range 1:4") ok
输出
Line 4 Error : nMode not in the range 1:4
In raise in file tests\raise.ring
例子
try
testmode(6)
catch
see "avoid raise!"
done
testmode(-1)
func testmode nMode
if nMode < 0 or nMode > 5
raise("Error : nMode not in the range 1:4")
ok
输出
avoid raise!
Line 12 Error : nMode not in the range 1:4
In raise In function testmode() in file tests\raise2.ring
called from line 7 in file tests\raise2.ring
我们可以使用 Assert() 函数在执行代码之前测试条件。
如果测试失败,程序将被终止,并显示包含断言条件的错误消息。
语法
Assert( condition )
例子
x = 10
assert( x = 10)
assert( x = 100 )
输出
Line 3 Assertion Failed!
In assert in file tests\assert.ring