亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

direktori cari
Ruby用戶指南 3、開始 4、簡單的例子 5、字符串 6、正則表達式 7、數(shù)組 8、回到那些簡單的例子 9、流程控制 10、迭代器 11、面向?qū)ο笏季S 12、方法 13、類 14、繼承 15、重載方法 16、訪問控制 17、單態(tài)方法 18、模塊 19、過程對象 20、變量 21、全局變量 22、實變量 23、局部變量 24、類常量 25、異常處理:rescue 26、異常處理:ensure 27、存取器 28、對象的初始化 29、雜項 RGSS入門教程 1、什么是RGSS 2、開始:最簡單的腳本 3、數(shù)據(jù)類型:數(shù)字 4、數(shù)據(jù)類型:常量與變量 5、數(shù)據(jù)類型:字符串 6、控制語句:條件分歧語句 7、控制語句:循環(huán) 8、函數(shù) 9、對象與類 10、顯示圖片 11、數(shù)組 12、哈希表(關(guān)聯(lián)數(shù)組) 13、類 14、數(shù)據(jù)庫 15、游戲?qū)ο?/a> 16、精靈的管理 17、窗口的管理 18、活動指令 19、場景類 Programming Ruby的翻譯 Programming Ruby: The Pragmatic Programmer's Guide 前言 Roadmap Ruby.new 類,對象和變量 容器Containers,塊Blocks和迭代Iterators 標準類型 深入方法 表達式Expressions 異常,捕捉和拋出(已經(jīng)開始,by jellen) 模塊 基本輸入輸出 線程和進程 當遭遇挫折 Ruby和它的世界 Ruby和Web開發(fā) Ruby Tk Ruby 和微軟的 Windows 擴展Ruby Ruby語言 (by jellen) 類和對象 (by jellen) Ruby安全 反射Reflection 內(nèi)建類和方法 標準庫 OO設(shè)計 網(wǎng)絡和Web庫 Windows支持 內(nèi)嵌文檔 交互式Ruby Shell 支持 Ruby參考手冊 Ruby首頁 卷首語 Ruby的啟動 環(huán)境變量 對象 執(zhí)行 結(jié)束時的相關(guān)處理 線程 安全模型 正則表達式 字句構(gòu)造 程序 變量和常數(shù) 字面值 操作符表達式 控制結(jié)構(gòu) 方法調(diào)用 類/方法的定義 內(nèi)部函數(shù) 內(nèi)部變量 內(nèi)部常數(shù) 內(nèi)部類/模塊/異常類 附加庫 Ruby變更記錄 ruby 1.6 特性 ruby 1.7 特性 Ruby術(shù)語集 Ruby的運行平臺 pack模板字符串 sprintf格式 Marshal格式 Ruby FAQ Ruby的陷阱
watak

一個運行著的程序常會遇到意外的問題.一個要讀取的文件不存在;當希望存入一些數(shù)據(jù)時磁盤滿了;用戶可能輸入不恰當?shù)臄?shù)據(jù).

ruby>?file?=?open("some_file")
ERR:?(eval):1:in?`open':?No?such?file?or?directory?-?some_file?

一個健壯的程序會合理并漂亮的處理這些問題.面對那些異常是一件討人厭的工作.C程序員被要求做到檢查每一個可能導致錯誤發(fā)生的系統(tǒng)調(diào)用的返回值并立刻做出決定.

FILE?*file?=?fopen("some_file",?"r");
if?(file?==?NULL)?{??
fprintf(?stderr,?"File?doesn't?exist.\n"?);??
exit(1);
}
bytes_read?=?fread(?buf,?1,?bytes_desired,?file?);
if?(bytes_read?!=?bytes_desired?)?{??
/*?do?more?error?handling?here?...?*/
}
...?

這項無聊的工作會使程序員最終變得馬虎并忽略掉它,結(jié)果是程序無法應對異常.令一方面,這樣也會降低程序的可讀性.因為過多的錯誤處理使有意義的代碼也變得雜亂了.

在Ruby里,就像其它的現(xiàn)代語言,我們可以通過隔離的辦法處理代碼域里的異常,因此,這有著驚人的效果卻又不會為程序員或以后希望讀它的其它人造成過度的負擔.代碼域由begin開始直到遇到一個異常,這將導致轉(zhuǎn)向一個由rescue標記的錯誤處理代碼域.如果異常沒發(fā)生,rescue代碼就不會使用.下面的代碼返回文本文件的第一行,如果有異常則返回?nil.

def?first_line(?filename?)
??begin
????file?=?open("some_file")
????info?=?file.gets
????file.close
????info??#?Last?thing?evaluated?is?the?return?value
??rescue
????nil???#?Can't?read?the?file??then?don't?return?a?string
??end
end?

有時我們會希望圍繞問題展開創(chuàng)造性工作.這里,如果文件不存在,我們用標準輸入代替:

begin
??file?=?open("some_file")
rescue
??file?=?STDIN
end
begin
??#?...?process?the?input?...
rescue
??#?...?and?deal?with?any?other?exceptions?here.
end?

retry?用于?rescue?代碼表示又重新執(zhí)行?begin?代碼.這讓我們可以壓縮前面的例子:

fname?=?"some_file"
begin
??file?=?open(fname)
??#?...?process?the?input?...
rescue
??fname?=?"STDIN"
??retry
end?

但這仍有一點瑕疵.一個不存在的文件將導致不停止地?retry.你在使用?retry?做異常處理時應注意到這一點.

每個Ruby庫在遇到錯誤時都會提交一個異常,你可以在自己的代碼里明確地提交異常.用?raise?來提交異常.它帶一個參數(shù),也就是描述異常的一個字符串.參數(shù)是可選的但不應被省略.之后它可以通過一個特殊的全局變量?$!?訪問.

ruby>?raise?"test?error"
???test?error
ruby>?begin
????|???raise?"test2"
????|?rescue
????|???print?"An?error?occurred:?",$!,?"\n"
????|?end
An?error?occurred:?test2
???nil? 版權(quán)聲明:RUBY文檔中心的所有文章標明[原創(chuàng)]的均為本站作品,版權(quán)屬RUBY中文化計劃,若轉(zhuǎn)載請注明;標明[翻譯]的其外文版權(quán)歸原作者,譯文版權(quán)屬RUBY中文化計劃;標明[轉(zhuǎn)貼]的,若原作者感到侵犯了他的著作權(quán),那么請及時跟主持人聯(lián)系,我們會盡快更正。 ?
Artikel sebelumnya: Artikel seterusnya: