Тема: Власні повідомлення про помилки(виключення) на їх обробка
Всім доброго дня. Сподіваюсь ви мені підкажете як оброблювати виключення програми.
І так:
Я читаю документ *.ODT
#!/usr/bin/env ruby
require 'zip'
ContentXML = 'content.xml'
odtfile = ARGF.argv[0]
begin
p "Read file: " + odtfile
p Zip::File.open(odtfile).read(ContentXML)
rescue StandardError => e
p e
end
У випадку помилки буде від ображено стандартне програмне повідомлення (File not found, context.xml not presnt, ну і т.д.) Але як можна зробити, щоб показувалися власні повідомлення
p 'File name expected'
p 'File not found'
p 'Incorrect odt document (Content.xml not present)'
І можливо, при якомусь конкретному виключенні виконати додаткові дії. Справа в тому, що будь-яка помилка потрапить в цей обробник. Єдина інформація, яку я можу взнати — опис виключення.
На https://www.rubydoc.info/gems/rubyzip/1.2.1/Zip/Error Дуже поганий опис. Є згадка про класи виключень, але ні слова про те, коли якому класу буде належати дане виключення.
Експеримент показав що
rescue StandardError => e
puts e.class.name
end
Виключення класу **Zip::Error** якщо файл не знайдено, або це не архів, і **Errno::ENOENT** якщо відсутній content.xml
Можна зробити так
rescue Zip::Error => e
p 'File not found'
rescue Errno::ENOENT => e
p 'Incorrect ODT file'
end
Але як на мене,це не зовсім вірний підхід.