【问题标题】:Casting of Exception necessity异常必要性的铸造
【发布时间】:2015-11-29 17:54:47
【问题描述】:

快速提问伙计们,我已经看到很多关于 try/catch 块的代码,而且我已经看到很多次了,人们使用特定的异常来处理东西。 我的意思是,你有什么理由这样做? 我通常只是在 catch 块中放一个 Exception e 并从 Log 中读出它......这是性能问题还是只是习惯?

【问题讨论】:

    标签: java android debugging logging try-catch


    【解决方案1】:

    拥有不同的异常类可以让你拥有特定的异常代码,而无需确定类型。

    例如,而不是写作:

    try {
       ...do some stuff
    } catch( Exception e ) {
        if( e instanceof NullpointerException ) {
            ... do something
        } else if( e instanceof IOExceptio ) {
            ... do something else 
        }
    }
    

    你可以写:

    try {
        ... do something ...
    } catch ( NullpointerException epe ) {
        ... handle NPE
    } catch ( IOException ioe ) {
        ... handle IO Exception
    }
    

    等等

    此外,您还可以选择只捕获一些异常,并允许其他异常被方法抛出:

    public void doSomeIO() throws IOException {
    
        try {
            ... do something ...
        } catch( NullpointerException ) {
            ... handle NPE
        }
    
    }
    

    然后你会这样称呼它:

    try {
        doSomeIO();
    except ( IOException ) {
        handle the IO exception
    }
    

    这样你可以在它所属的地方进行特定的异常处理,并允许其他人在可以更好地处理它们的地方冒泡。

    【讨论】:

    • 所以对于不同的异常有不同的方法吗?有什么例子吗?
    • 参见上面的例子。
    【解决方案2】:

    捕获ClassCastException 的错误与捕获ArrayIndexOutOfBounds 异常的错误不同。你应该相应地处理它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-03
      • 2019-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多