【问题标题】:android exception for validating file exist not working验证文件存在的android异常不起作用
【发布时间】:2011-08-12 10:17:19
【问题描述】:

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

@Override 公共无效运行(){ 如果(数据!= 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 客户端代码中获得的。除了创建一种正确抛出异常的方法之外,请帮助我理解为什么第一个不起作用以及为什么您建议的那个不起作用。

【问题讨论】:

    标签: android exception-handling filenotfoundexception


    【解决方案1】:

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

    throw transferError;
    

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

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

    【讨论】:

    • 我的吐司结果:
      @Override public void run() { try { run(); } catch (FileNotFoundException e) {Toast.makeText(FileSender.this, "找不到指定的文件", Toast.LENGTH_SHORT).show(); } } 
      我收到以下错误消息:
       Toast 类型中的方法 makeText(Context, CharSequence, int) 不适用于参数 (FileSender, String, int) 
      可能可以不要在这里敬酒。其他人建议我可能需要使用日志消息。我可能会被卡住一段时间,因为当我应该学习这些类和块时,我正在编写代码。
    • FileSender 是一项活动吗?如果没有,您需要有上下文才能敬酒。如果您不关心用户是否知道问题,日志记录也是可以接受的。
    • 是的,这是一项活动。但是同样,仅仅学习这些东西就很难理解如何修复它以防止看不见的破坏。也就是说,我不介意登录,因为我是用户并且不在乎是否有人知道这个问题。你有什么建议可以在代码中提供帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2017-05-27
    • 2013-01-02
    • 1970-01-01
    相关资源
    最近更新 更多