作者laechan (小太保)
看板mud_sanc
标题Re: [wizs] 问题(房间)
时间Sun Apr 10 12:23:06 2011
※ 引述《justinj (黑旋风)》之铭言:
: 档案不存在: /u/j/justinj/area/aaa
: 档案不存在: /aaa
: 执行时段错误: *call_other() couldn't find object
: 程式: adm/simul_efun/find_object_or_load.c(adm/obj/simul_efun.c):19
: 物件: /adm/obj/simul_efun
: /u/j/justinj/test/tools/true3#12723 "cmd_set"
: u/j/justinj/test/tools/true3.c:1009
: /adm/obj/simul_efun "find_object_or_load"
: adm/simul_efun/find_object_or_load.c(adm/obj/simul_efun.c):19
: 当设定
: if(!ob=find_object_or_load(obj))
: return notify_fail("这个人目前不在线上或没有这个房间。\n");
: 只要ob不存在的话..每次到这里就会卡住了...要怎麽处理..
if( catch(
ob=find_object_or_load(obj) ) )
return notify_fail("这个人目前不在线上或没有这个房间。\n");
假设上面
蓝色字的部份在读取上出了问题时,catch
可以补捉到该问题的讯息;没问题时,catch 到的东
西就是空。
所以当 catch 有抓到东西时=读取有问题。
当你没用 catch 时,它出问题就会停在那里并吐讯
息给你,当你用 catch 时它出问题则不会停在那。
你也可以这样写...
str = catch(ob=find_object_or_load(obj));
if(str && str!="")
return notify_fail(str+ // 先吐出它 catch 到的讯息
"这个人目前不在线上或没有这个房间。\n");
// 然後若没问题这时 ob 就已经等於 find_object_or_load(obj) 了
catch 经常使用在一种场合,以我的工作室为例,一般来说
要 load 一个房间,要做两个以上的判断,像是档案存不存
在、是不是 .c 档、能不能被 find_object_or_load 等..
但底下一行就能搞定..
if(!catch(ob=find_object_or_load("/u/l/laechan/workroom")))
因为如果我的工作室有问题,则上面 catch 到的东西就不为
空;反过来说若没问题,catch 到的为空,则 ob 自然就读
取成功的意思。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 编辑: laechan 来自: 122.117.9.179 (04/10 12:26)
1F:推 justinj :受教了.... 04/10 17:51