用于验证文件的android异常存在不起作用

时间:2011-04-25 16:11:24

标签: android exception-handling filenotfoundexception

我一直在使用Eclipse ADT大约2个月。在那个时候,我有一个小实用程序,允许我选择一个IP地址和端口,然后发送一个文件到该组合。该实用程序按预期工作,但当我键入错误的文件名时,应用程序挂起。

@Override
   public void run() {
      if (data != null) {
         this.send(data);
      } else if (this.file != null) {
         if (file.exists()) {
            this.send(file);
         } else {
            transferError = new FileNotFoundException("The specified file could not be found");
         }
      }
   }


我甚至试图做以下事情,希望其中一个或另一个投掷,但我两个都不成功。

public void run() {
      if (data != null) {
         this.send(data);
      } else if (this.file != null) {
         if (file.exists()) {
            this.send(file);
         } else {
            transferError = new FileNotFoundException("The specified file could not be found");
         }
      }try {
         throw new Exception("blah blah blah");
      } catch (Exception e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
   }

我已经围绕这个例外,我已经添加了上面的那个,我尝试将它放在不同的地方,并且都不成功。再一次,我对此非常新,并从基本上切碎各种tcp客户端代码到这里。除了创建正确抛出异常的方法之外,请帮助我理解为什么第一个不起作用以及为什么你建议的那个。

1 个答案:

答案 0 :(得分:0)

在你的else块中,你不会抛出你创建的transferError。

throw transferError;

但是您可能无法这样做,因为FileNotFoundException是一个经过检查的异常,而run()方法不会声明任何抛出的异常。您可能需要找到一种向用户呈现错误的不同方式,例如使用Toast或其他方式。

你的第二个阻止不起作用,因为你正在捕捉你抛出的异常。