看板 mud_sanc 關於我們 聯絡資訊
※ 引述《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)
justinj :受教了.... 04/10 17:51