4

JavaSwingでエラー状態を処理する方法について質問があります。

Netbeansを使用して、単純なJavaSwingアプリを開発しています。テキストファイルを読み込んでから、テキストファイルにある数値に基づいて計算を実行します。メインのSwingクラスは、JFrameとJPanelsを保持します。

別のクラスファイルとしてファイル読み込みコードがあります。読み取った行数と数値のリストをメインのSwingアプリに返します。

ファイルの読み取りに失敗した場合(つまり、try-> catch(Exception ex))、アプリ全体がクラッシュすることに気付きました。上記のシナリオに起因するエラーを処理するための最良の方法は何ですか?つまり、ファイル読み込みコードがクラッシュし、プログラム全体がクラッシュしたくないということです。プログラムにファイルが破損していることを通知し、ユーザーが新しいファイルをロードするのを待ちます。

何かご意見は?

ヤクルト

4

3 に答える 3

6

例外をキャッチしたら、次を実行します。

JOptionPane.showMessageDialog("File is corrupted. Please select a new file.");

次に、ファイルダイアログを再度表示します。

ファイルが無効である間継続するループとしてこれを行うのがおそらく最善です。破損がある場合は、例外をスローするのではなく、ブールフラグを設定し、フラグが設定されている限りループします。そうすれば、適切なファイルが見つかると、whileループが終了します。

例:

public static void main(String[] args){
    boolean goodFile = false;

    while (!goodFile){
        JFileChooser chooser = new JFileChooser();
        chooser.showOpenDialog();

        goodFile = processFile(chooser.getSelectedFile());
    }
}

private boolean processFile(File file){
    //do you stuff with the file

    //return true if the processing works properly, and false otherwise    
}
于 2012-07-19T14:59:52.077 に答える
1

ええ、問題はIO読み取りの概念にあり、whileループはファイルの最後まで読み取ります。これにより、uがバッファリングされたリーダーを使用してこのコードを使用できるようになります。

String line = null
while((line = reader.readLine())!= null) {
// do stuf
}

読み取り行の処理でこの問題が発生した場合、必要なのは、Exceptionクラスを拡張して独自の例外クラスを作成し、メッセージをカスタム例外クラスに設定した後、その例外をcatchブロックにスローすることだけです。に

 JOptionPane.showMessageDialog(null,"message here"); //showMessageDialog is a static method

わかった

于 2012-07-19T15:11:35.000 に答える
0

例外をキャッチし、条件をcatchブロックに入れるだけです。アプリケーションが処理することを目的とした他のコンテンツがファイルに含まれている場合は、別のファイルを再処理するメソッドを呼び出すことができます。

新しいファイル操作の新しいプロセスの主な処理は、catchブロックから始まります。したがって、このように、Javaスロー例外を使用して、ゼロレベルからアプリを再起動する以外のまったく新しい方法でアプリケーションを再起動します。

于 2012-07-19T14:59:56.260 に答える