标签:
publicvoidconsumeAndForgetAllExceptions(){ try{ ...some code that throws exceptions } catch(Exception ex){ ex.printStacktrace(); }}采用上面这种方式处理异常时,catch代码段接管控制权,然后catch段之后代码继续执行,好像什么都没有发生。 publicvoidsomeMethod() throws Exception{}该方法内可能并不会抛出异常总结:忽略异常或随意抛出异常是常见现象。 publicList getAllAccounts() throws FileNotFoundException, SQLException{ ...}publicvoiddataAccessCode(){ try{ ..some code that throws SQLException }catch(SQLException ex){ ex.printStacktrace(); }}publicvoiddataAccessCode(){ try{ ..some code that throws SQLException }catch(SQLException ex){ thrownewRuntimeException(ex); }}publicclassDuplicateUsernameException extendsException { publicDuplicateUsernameException (Stringusername){....} publicStringrequestedUsername(){...} publicString[] availableNames(){...}}thrownewException("Username already taken");注:抛出什么异常参见最佳实践第一点 publicvoiddataAccessCode(){ Connection conn = null; try{ conn = getConnection(); ..some code that throws SQLException }catch(SQLException ex){ ex.printStacktrace(); } finally{ DBUtil.closeConnection(conn); }} classDBUtil{ publicstaticvoidcloseConnection (Connection conn){ try{ conn.close(); } catch(SQLException ex){ logger.error("Cannot close connection"); thrownewRuntimeException(ex); } }}DBUtil关闭连接工具类,最重要的部分在于finally,无论异常发不发生都会执行关闭连接操作,如果关闭发生异常会抛出一个RuntimeException。
2. 不要使用异常作控制流程之用publicvoiduseExceptionsForFlowControl() { try{ while(true) { increaseCount(); } } catch(MaximumCountReachedException ex) { } //Continue execution}publicvoidincreaseCount() throws MaximumCountReachedException { if(count >= 5000) thrownewMaximumCountReachedException();}try{..}catch(Exception ex){}标签:
原文地址:http://www.cnblogs.com/linux007/p/5782708.html