1

私はRuby(および一般的なスクリプトまたはプログラミング)に不慣れであり、このエラー(または煩わしさ)の原因を理解できないようです:

したがって、問題を再現するための最小限のコードは次のとおりです。

require 'tk'

open(Tk.getOpenFile)

これで、ダイアログが期待どおりに開き、ファイルを選択する限り、すべてが正常に機能します。キャンセルを押すと、ダイアログが静かに閉じると思っていましたが、代わりにあらゆる種類のエラーがスローされます。これらのエラーメッセージを防ぐために私にできることはありますか?

私が受け取るエラーメッセージは次のとおりです。

file_path:in `initialize': No such file or directory -  (Errno::ENOENT)
    from file_path:3:in `open'
    from file_path:3:in `<top (required)>'
    from -e:1:in `load'
    from -e:1:in `<main>'

私は何が起こっているのか本当に理解していないと言わなければなりません。誰かがこれを紹介的な方法で説明できますか(私はかなり長い間グーグルで検索しましたが、おそらくこれらの問題に関する知識と語彙が限られているため)これを説明するものは何も見つかりませんでした)。どんな助けでも大歓迎です。

4

2 に答える 2

2

問題は、Tk.getOpenFileキャンセルを押すと空の文字列が返されることです。次に、空の文字列をopenメソッドに渡し(適切なファイルパスが必要です)、メソッドが爆発します。

すべての場合にコードを機能させるには、空の文字列をチェックする必要があります。

file_path = Tk.getOpenFile
open(file_path) unless file_path.empty?
于 2012-12-29T22:40:51.270 に答える
1

Errno :: ENOENTは、ファイルが見つからない場合のオペレーティングシステムエラーです。

キャンセルすると、Tk.getOpenFileは何を返しますか?空の文字列

空の文字列でopenが呼び出されたときのエラーメッセージは何ですか?エラー::ENOENT

あなたはおそらく次のようなことをするべきです:

file = Tk.getOpenFile
open(file) unless file.empty?
于 2012-12-29T22:40:05.867 に答える