OptionParser は定義に反するオプションの与え方をすると例外を発生しちゃうんだけど、こんな書き方で対処できる。まぁ、optparse チュートリアルとマニュアルの例外処理のところを読めば誰でも分かるんですけど。
require 'optparse'
opt = OptionParser.new()
opt.on( '-f filename' ) { |src|
@srcpath = src
}
begin
opt.parse!( ARGV )
rescue => err
puts err.to_s
end
チュートリアルには InvalidOption だけ書かれていたが、実際には
- InvalidOption
- 未定義のオプションを指定した
- MissingArgument
- 引数の必要なオプションに引数を与えなかった
で、いずれにせよ rescue では特に何も記述せずに補足でき、補足した例外をそのまま to_s するだけで十分使いものになる。
$ ruby opttest.rb -f
missing argument: -f
$ ruby opttest.rb -c
invalid option: -c
便利だなぁ。