亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Ruby > 正文

Ruby中的異常處理代碼編寫示例

2020-10-29 19:37:36
字體:
來源:轉載
供稿:網友

單個異常使用 fail 關鍵字僅僅當捕獲一個異常并且反復拋出這個異常(因為這里你不是失敗,而是準確的并且故意拋出一個異常)。

  begin   fail 'Oops'  rescue => error   raise if error.message != 'Oops'  end

    不要為 fail/raise 指定準確的 RuntimeError。

   

 # bad  fail RuntimeError, 'message'  # good - signals a RuntimeError by default  fail 'message'

    寧愿提供一個異常類和一條消息作為 fail/raise 的兩個參數,而不是一個異常實例。

   

 # bad  fail SomeException.new('message')  # Note that there is no way to do `fail SomeException.new('message'), backtrace`.  # good  fail SomeException, 'message'  # Consistent with `fail SomeException, 'message', backtrace`.

    不要在 ensure 塊中返回。如果你明確的從 ensure 塊中的某個方法中返回,返回將會優于任何拋出的異常,并且盡管沒有異常拋出也會返回。實際上異常將會靜靜的溜走。

  

 def foo   begin    fail   ensure    return 'very bad idea'   end  end

    Use implicit begin blocks when possible.如果可能使用隱式 begin 代碼塊。

   

 # bad  def foo   begin    # main logic goes here   rescue    # failure handling goes here   end  end  # good  def foo   # main logic goes here  rescue   # failure handling goes here  end

    通過 contingency methods 偶然性方法。 (一個由 Avdi Grimm 創造的詞) 來減少 begin 區塊的使用。

 

  # bad  begin   something_that_might_fail  rescue IOError   # handle IOError  end  begin   something_else_that_might_fail  rescue IOError   # handle IOError  end  # good  def with_io_error_handling    yield  rescue IOError   # handle IOError  end  with_io_error_handling { something_that_might_fail }  with_io_error_handling { something_else_that_might_fail }

    不要抑制異常輸出。

 

  # bad  begin   # an exception occurs here  rescue SomeError   # the rescue clause does absolutely nothing  end  # bad  do_something rescue nil

    避免使用 rescue 的修飾符形式。

   

 # bad - this catches exceptions of StandardError class and its descendant classes  read_file rescue handle_error($!)  # good - this catches only the exceptions of Errno::ENOENT class and its descendant classes  def foo   read_file  rescue Errno::ENOENT => ex   handle_error(ex)  end

    不要用異常來控制流。

   

 # bad  begin   n / d  rescue ZeroDivisionError   puts "Cannot divide by 0!"  end  # good  if d.zero?   puts "Cannot divide by 0!"  else   n / d  end

    應該總是避免攔截(最頂級的) Exception 異常類。這里(ruby自身)將會捕獲信號并且調用 exit,需要你使用 kill -9 殺掉進程。

 

  # bad  begin   # calls to exit and kill signals will be caught (except kill -9)   exit  rescue Exception   puts "you didn't really want to exit, right?"   # exception handling  end  # good  begin   # a blind rescue rescues from StandardError, not Exception as many   # programmers assume.  rescue => e   # exception handling  end  # also good  begin   # an exception occurs here  rescue StandardError => e   # exception handling  end

    將更具體的異常放在救援(rescue)鏈的上方,否則他們將不會被救援。

  # bad  begin   # some code  rescue Exception => e   # some handling  rescue StandardError => e   # some handling  end  # good  begin   # some code  rescue StandardError => e   # some handling  rescue Exception => e   # some handling  end

    在 ensure 區塊中釋放你程式獲得的外部資源。

  

 f = File.open('testfile')  begin   # .. process  rescue   # .. handle error  ensure   f.close unless f.nil?  end

    除非必要, 盡可能使用 Ruby 標準庫中異常類,而不是引入一個新的異常類。(而不是派生自己的異常類)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久免费视频这里只有精品| 九九热这里只有在线精品视| 性欧美xxxx| 国产精品午夜国产小视频| 91精品国产免费久久久久久| 国产美女久久久| 欧美日韩999| 成人免费视频在线观看超级碰| 日韩经典一区二区三区| 97人洗澡人人免费公开视频碰碰碰| 91精品国产亚洲| 欧美日韩午夜视频在线观看| 亚洲性av在线| 亚洲的天堂在线中文字幕| 日韩免费电影在线观看| 亚洲欧美激情精品一区二区| 97av在线视频| 亚洲精品资源美女情侣酒店| 青青草成人在线| 91精品久久久久久久久中文字幕| 日韩欧美a级成人黄色| 久久久久99精品久久久久| 亚洲色图50p| 亚洲网在线观看| 久久久视频免费观看| 神马国产精品影院av| 亚洲激情成人网| 欧美日韩成人在线播放| 亚洲精品欧美日韩| 亚洲国产美女精品久久久久∴| 亚洲欧美激情精品一区二区| 欧美一乱一性一交一视频| 国产在线精品播放| 久久综合88中文色鬼| 国产精品日韩欧美大师| 欧美天堂在线观看| 欧美亚洲成人精品| 欧美日韩激情视频| 精品视频久久久久久久| 亚洲国产91色在线| 欧美日在线观看| 色综合五月天导航| 亚洲国产精品嫩草影院久久| 亚洲精品一区二区在线| 欧美亚洲国产日韩2020| 欧美大学生性色视频| 精品调教chinesegay| 日韩久久精品成人| 亚洲欧美国产日韩中文字幕| 国产亚洲精品91在线| 日韩欧美亚洲范冰冰与中字| 欧美性猛交xxxx乱大交| 亚洲视频在线免费看| 日韩在线小视频| 亚洲国产另类 国产精品国产免费| 午夜欧美不卡精品aaaaa| 91精品国产九九九久久久亚洲| 中文字幕日本精品| 自拍亚洲一区欧美另类| 狠狠色噜噜狠狠狠狠97| www.欧美视频| 日韩成人激情在线| 国产精品日日做人人爱| 亚洲色图偷窥自拍| 国产成人免费91av在线| 欧美中文字幕在线视频| 欧美视频第一页| 欧美性猛交xxxx久久久| 精品欧美aⅴ在线网站| 91在线免费网站| 91社区国产高清| 久久精品青青大伊人av| 国产亚洲精品久久久| 久久久99久久精品女同性| 韩剧1988免费观看全集| 亚洲成人av在线| 成人在线视频网| 欧美视频精品一区| 国内精品伊人久久| 亚洲精品国产品国语在线| 高清视频欧美一级| 2020欧美日韩在线视频| 国产亚洲精品va在线观看| 国产精品久久97| 亚洲欧美综合图区| 亚洲精品电影在线观看| 成人网中文字幕| 日韩免费高清在线观看| 97精品视频在线播放| 欧美另类交人妖| 亚洲免费伊人电影在线观看av| 一区二区三区日韩在线| 久久好看免费视频| 亚洲久久久久久久久久久| 久久久久久久久久亚洲| 国产亚洲福利一区| 亚洲欧洲在线视频| 亚洲欧美日韩一区在线| 亚洲精选中文字幕| 久久成人亚洲精品| 日韩中文视频免费在线观看| 亚洲国产古装精品网站| 亚洲第一中文字幕| 亚洲日韩第一页| 日韩亚洲一区二区| 国产精品久久久久久久久久免费| 国产a∨精品一区二区三区不卡| 久久成人av网站| 日韩电影大片中文字幕| 欧美国产中文字幕| 亚洲精品成人网| 久久精品这里热有精品| 成人激情视频在线| 这里只有精品在线观看| 亚洲一区999| 国产精品扒开腿做爽爽爽的视频| 日韩有码视频在线| 成人性生交大片免费看视频直播| 久久视频免费在线播放| 韩国美女主播一区| 中文字幕亚洲无线码在线一区| 热久久美女精品天天吊色| 亚洲久久久久久久久久| 亚洲人成自拍网站| 2019中文字幕在线免费观看| 日韩成人av网址| 精品日本美女福利在线观看| 欧美老少做受xxxx高潮| 亚洲国产精品高清久久久| 亚洲国产精品高清久久久| 久久人人97超碰精品888| 97在线免费观看视频| 亚洲免费视频观看| 亚洲精品久久在线| 91精品视频免费| 亚洲男人天堂2023| 亚洲日本欧美中文幕| 久久69精品久久久久久国产越南| 欧美中文字幕在线观看| 亚洲视频日韩精品| 高清亚洲成在人网站天堂| 国产精品日日摸夜夜添夜夜av| 国产丝袜精品视频| 激情亚洲一区二区三区四区| 中文字幕av一区二区三区谷原希美| 国产成人精品久久| 91精品在线观看视频| 久久精品99久久香蕉国产色戒| 日韩免费中文字幕| 国产成人精品日本亚洲专区61| 91在线观看免费高清完整版在线观看| 亚洲第一精品久久忘忧草社区| 久久亚洲精品国产亚洲老地址| 91麻豆国产语对白在线观看| 欧美日韩精品在线播放| 97视频在线免费观看| 在线视频日韩精品| 黑人与娇小精品av专区| 国产精品欧美亚洲777777| 国产视频亚洲精品| 欧美交受高潮1| 亚洲在线免费观看| 国产+人+亚洲| 亚洲成av人影院在线观看|