newlisp 异常
throw 和 throw-error的比较
相同点:
两者都能造成代码退出当前运行块,如果调用者没有使用catch,都能造成程序退出。
不同点:
逻辑上throw-error是因为错误退出。
而throw可以类似于其他语言中的return语句,但是必须用catch配合。
下面的测试代码用catch检测返回的错误信息,如果有错误信息,则显示并退出程序,如果没有错误信息,则显示成功:
(catch (receive-init-request s) 'result) (if result (println "login failed: " result)(exit)) (println "login succeeded")