0

私は Eclipse ADT を約 2 か月間使用しています。その時は、IP アドレスとポートを選択して、そのコンボにファイルを送信できる小さなユーティリティがあります。ユーティリティは意図したとおりに動作しますが、間違ったファイル名を入力すると、アプリケーションがハングします。

@オーバーライド
   public void run() {
      if (データ != null) {
         this.send(データ);
      } その他の場合 (this.file != null) {
         if (file.exists()) {
            this.send(ファイル);
         } そうしないと {
            transferError = new FileNotFoundException("指定されたファイルが見つかりませんでした");
         }
      }
   }


どちらかがスローされることを期待して、次のことを試みましたが、両方で失敗しました。

public void run() {
      if (データ != null) {
         this.send(データ);
      } その他の場合 (this.file != null) {
         if (file.exists()) {
            this.send(ファイル);
         } そうしないと {
            transferError = new FileNotFoundException("指定されたファイルが見つかりませんでした");
         }
      }試す {
         throw new Exception("何とか何とか");
      キャッチ(例外e){
         // TODO 自動生成された catch ブロック
         e.printStackTrace();
      }
   }

私は例外を回避し、上記のものを追加し、別の場所に配置しようとしましたが、すべて失敗しました。繰り返しますが、私はこれに非常に慣れておらず、基本的にさまざまな tcp クライアント コードを細かく刻んでここにたどり着きました。例外を正しくスローする方法を作成することは別として、最初の例外が機能しない理由と、提案したものが機能する理由を理解するのを手伝ってください。

4

1 に答える 1

0

あなたのelseブロックでは、作成したtransferErrorをスローしていません。

throw transferError;

ただし、FileNotFoundException はチェック済み例外であり、run() メソッドはスローされた例外を宣言しないため、おそらくそれを行うことはできません。トーストなどを使用して、ユーザーにエラーを表示する別の方法を見つける必要があるでしょう。

スローした例外をキャッチしているため、2 番目のブロックは機能しません。

于 2011-04-25T16:46:08.633 に答える