zip模块的Ruby自定义错误处理程序

时间:2018-07-27 20:58:37

标签: ruby error-handling exception-handling unzip

我用Ruby阅读* .odt文档,所以:

#!/usr/bin/env ruby

require 'zip'

ContentXML = 'content.xml'

odtfile = ARGF.argv[0]
begin
    puts "Read file: " + odtfile
    puts Zip::File.open(odtfile).read(ContentXML)
rescue StandardError => e
    puts e
end

此代码显示了每个或每个异常的错误消息:(找不到文件,错误的* .odt文件等)如何显示自定义错误消息? F.e。:

p 'File name expected'
p 'File not found'
p 'Incorrect odt document (Content.xml not present)'

也许,通过扩展程序,将会添加新的错误,例如“ Incorrect Content.xml”等。

我还想添加自定义处理程序以解决某种错误。

如何区分这种处理方式?

https://www.rubydoc.info/gems/rubyzip/1.2.1/Zip/Error简短的错误说明中,我不了解错误类别。

实验中我发现了这一点。

rescue StandardError => e
    puts e.class.name
end

如果没有退出文件,我得到 Zip :: Error ,如果文件不包含content.xml,我得到 Errno :: ENOENT

我可以这样做:

rescue  Zip::Error => e
    p 'File not found'
rescue Errno::ENOENT => e
    p 'Incorrect ODT file'
end

这是学习每个错误的正确方法?

0 个答案:

没有答案