麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

ruby,異常處理之rescue的相關知識

2020-02-24 15:41:00
字體:
來源:轉載
供稿:網友

  今天小編跟大家分享一篇在ruby里,異常處理之rescue的相關知識,感興趣的朋友跟小編一起來了解一下吧!

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

  ruby>file=open("some_file")

  ERR:(eval):1:in`open':Nosuchfileordirectory-some_file

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

  FILE*file=fopen("some_file","r");

  if(file==NULL){

  fprintf(stderr,"Filedoesn'texist./n");

  exit(1);

  }

  bytes_read=fread(buf,1,bytes_desired,file);

  if(bytes_read!=bytes_desired){

  /*domoreerrorhandlinghere...*/

  }

  ...

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

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

  deffirst_line(filename)

  begin

  file=open("some_file")

  info=file.gets

  file.close

  info#Lastthingevaluatedisthereturnvalue

  rescue

  nil#Can'treadthefile?thendon'treturnastring

  end

  end

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

  begin

  file=open("some_file")

  rescue

  file=STDIN

  end

  begin

  #...processtheinput...

  rescue

  #...anddealwithanyotherexceptionshere.

  end

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

  fname="some_file"

  begin

  file=open(fname)

  #...processtheinput...

  rescue

  fname="STDIN"

  retry

  end

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

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

  ruby>raise"testerror"

  testerror

  ruby>begin

  |raise"test2"

  |rescue

  |print"Anerroroccurred:",$!,"/n"

  |end

  Anerroroccurred:test2

  nil

  以上就是在ruby里,異常處理之rescue的相關知識,想必都了解了吧,更多相關內容請繼續關注武林技術頻道。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 欧美极品免费 | 史上最强炼体老祖动漫在线观看 | 日韩a毛片免费观看 | 国产免费观看av | 成人国产精品一区 | 欧美不卡在线 | 91精品免费观看 | 国产精品视频导航 | 国产小视频在线观看 | 欧洲精品久久久 | 欧日韩在线 | 久草导航 | av不卡免费在线 | 亚洲国产高清视频 | 在线观看国产www | 欧美色视 | asian裸体佳人pics | 日韩激情在线视频 | 免费观看黄色一级视频 | 亚洲精品免费播放 | 免费a视频在线观看 | 7777奇米成人四色影视 | 中国fx性欧美xxxx | 久久亚洲一区二区三区成人国产 | 国产毛片网站 | 黄色网址入口 | 久久久久国 | 国产精品高潮视频 | 羞羞视频免费网站含羞草 | xnxx18日本| 黄色免费小网站 | 毛片免费在线 | 欧美成年性h版影视中文字幕 | 久在线观看福利视频69 | 1314av| 欧美成人免费小视频 | 国产精品久久久久久久久久大牛 | 日本在线播放一区二区 | 娇妻被各种姿势c到高潮小说 | 欧美综合在线观看视频 | 久久久久久久久久网站 |