0

我已经使用 Eclipse ADT 大约 2 个月了。那时,我有一个小实用程序,可以让我选择 IP 地址和端口,然后将文件发送到该组合。该实用程序按预期工作,但是当我输入错误的文件名时,应用程序挂起。

@覆盖
   公共无效运行(){
      如果(数据!= null){
         this.send(数据);
      } else if (this.file != null) {
         如果 (file.exists()) {
            this.send(文件);
         } 别的 {
            transferError = new FileNotFoundException("找不到指定的文件");
         }
      }
   }


我什至尝试做以下事情,希望其中一个会抛出,但我在这两个方面都不成功。

公共无效运行(){
      如果(数据!= null){
         this.send(数据);
      } else if (this.file != null) {
         如果 (file.exists()) {
            this.send(文件);
         } 别的 {
            transferError = new FileNotFoundException("找不到指定的文件");
         }
      }尝试 {
         抛出新异常(“等等等等”);
      } 捕捉(异常 e){
         // TODO 自动生成的 catch 块
         e.printStackTrace();
      }
   }

我已经解决了这个异常,我已经添加了上面的那个,我尝试将它放在不同的地方,但都没有成功。同样,我对此非常陌生,并且基本上是从各种 tcp 客户端代码中获得的。除了创建一种正确抛出异常的方法之外,请帮助我理解为什么第一个不工作以及为什么你建议的那个是。

4

1 回答 1

0

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

throw transferError;

但是,您可能无法这样做,因为 FileNotFoundException 是一个检查异常,并且 run() 方法没有声明任何抛出的异常。您可能需要找到一种不同的方式将错误呈现给用户,例如 Toast 或其他东西。

您的第二个块不起作用,因为您正在捕获您抛出的异常。

于 2011-04-25T16:46:08.633 回答