Java 常用API的运用,效率及技巧九

9. Exceptions
Java 常用API的运用,效率及技巧九
 

 

 

Java采用违例(Exception)处理机制来进行错误处理。 违例机制的一个好处就是能够简化错误控制代码, 我们再也不用检查一个特定的错误, 然后在程序的多处地方对其进行控制。 此外, 也不需要在方法调用的时候检查错误(因为保证有人能够捕获这里的错误)。 我们只需要在一个地方处理问题:违例控制模块或者违例控制器 这样可有效减少代码量, 并将那些用于描述具体操作的代码与专门纠正错误的代码分隔开。

 

一个完整的违例例子:

 

public void throwTest() throws MyException {
        try { ... 
        } catch (SQLException se) { 
                cat.error("", se); 
                throw new MyException(se.getMessage()); 
        } catch (Exception e) {
                 cat.error("", e); 
        } finally { ... } 
} 
 

如果一段代码有可能会抛出违例可以用try {} catch {}来处理。 catch到的违例可以再抛出, 也可以转换为其它类型的Exception抛出。 finally块里面的代码总会被执行到的, 不管前面是否已经throwreturn了。

 

Throwable是所有违例的基类, 它有两种常规类型。 其中, Error代表编绎期和系统错误, 我们一般不必特意捕获它们。 Exception是可以从任何标准Java库的类方法中掷出的基本类型。

 

看上面的图, 如果是Error的子类或是RuntimeException的子类这种违例有一定的特殊性, 可以说我们可以当它们不存在, 当这种违例抛出的时候, 我们可以不catch它, 也可以不在方法上throws它。 RuntimeException一般代表的是一个编程错误, 是完全可以避免的。

 

性能注意点: 因为使用了Exception之后是要影响一些效率的, 所以Exception不能滥用。一般的不要用Exception来控制业务流程, 其次不要循环体内使用。

 

技巧:我们可以从Exception或直接从Throwable继承写我们自己的Exception 然后根据业务需要抛不同种类的Exception

 

你可能感兴趣的:(java)