public class App
{
private static Logger logger = Logger.getLogger(App.class);
public static void main( String[] args )
{
System.out.println("We are going to do something interesting....");
try {
throw new NullPointerException("abcedfeg");
} catch (Exception e) {
logger.info("Unexpected error in ", e);
}
}
}
上述代码分析:
对于try-catch结构,若try里,没有错误那么只会执行try不执行catch,如果try里有错误那么try里和catch里都会执行。在上述代码中先执行try里面的异常,抛给catch中,catch用e接收,然后在控制台和日志中都会输出异常
另外,try catch finally 中,一旦出现异常,try中的return就不会执行,如果finally中有return就执行finally中的,finally中没有就执行catch中的(catch中有return是,是缓存了return中的对象的,但是不返回,在finally中返回,对象的值也可以被finally中更改)