快捷搜索: 王者荣耀 脱发

关于try{} catch(exception e )

由一句话带来的三种思考,起初看异常处理看得云里雾里,对于try catch() 更是不知所谓,最近看多线程以及到论坛查找,就这句话有了一些最基本的理解。

在java中,异常存在三种形式:

1、error,主要有jvm形成,不易捕获;

2、runtime exception,运行异常与环境有关,编译时无法检查,而且发生的情况复杂,JVM自动处理,无需人工捕获;

3、exception ,需要捕获的异常。

首先exception 是程序应该捕获的异常,如果JVM产生了exception且没有捕获,那么程序将自动停止。try{ }中加入运行代码——可能会发生exception异常的的代码,如果这段代码存在异常,JVM将抛出这个异常,而catch( )将捕获抛出的异常,程序继续运行。换句话而言,try{}—catch()就是排除运行代码中的异常,catch(exception e)将抛出的异常显示出来。

throw与try catch

两者最大的区别就是throw直接抛出异常,无需自己处理,有程序以外的代码处理,至于什么异常开发者也不会知道,如果没有代码处理抛出的异常,程序将自动结束;

try catch可以捕获抛出的异常,并显示出来,开发者可以很明显的了解自己代码的异常。

throw与throws

void doA(int a) throws Exception1,Exception3{ try{ ......

}catch(Exception1 e){ throw e; }catch(Exception2 e){ System.out.println("出错了!"); } if(a!=b) throw new Exception3("自定义异常"); }

代码中Exception1、 2、 3都可存在错误

如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。 如果产生Exception2异常,则该方法自己处理了(即System.out.println("出错了!");)。所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,Exception3 里面的Exception2也就不用写了。 而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。

throws是用在异常说明之后,若存在异常,将由方法的调用者执行;

throw是用在方法体内,抛出后由程序外的代码处理。

throws可能存在异常需要抛出,强调可能;

throw 则是抛出了一些具体的异常——一些已知的异常,执行throw代码就是抛出异常。

经验分享 程序员 微信小程序 职场和发展