我一直在使用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客户端代码到这里。除了创建正确抛出异常的方法之外,请帮助我理解为什么第一个不起作用以及为什么你建议的那个。
答案 0 :(得分:0)
在你的else块中,你不会抛出你创建的transferError。
throw transferError;
但是您可能无法这样做,因为FileNotFoundException是一个经过检查的异常,而run()方法不会声明任何抛出的异常。您可能需要找到一种向用户呈现错误的不同方式,例如使用Toast或其他方式。
你的第二个阻止不起作用,因为你正在捕捉你抛出的异常。