throws E1,E2,E3 只是告诉程序这个方法可能会抛出这些个异常,方法的调用者可能要处理这些异常。而这些异常E1,E2,E3可能是该函数体产生的。
而throw是明确之处这个地方要抛出这个异常。
void doA() throws Exception1, Exception3 { try { …… } catch(Exception1 e) { throw e; } catch(Exception2 e) { System.out.println("出错了"); } if (a != b) throw new Exception3("自定义异常"); }
代码块……中可能产生异常Exception1、Exception2和Exception3。
如果产生Exception1异常,则捕捉了之后抛出由该方法的调用者去做处理;
如果产生Exception2异常,则该方法自己做了处理(打印出了说出错了),所以该方法就不会再向外抛出Exception2异常了,void doA() throws Exception1,,Excpetion3里面的Exception2也就不用写了;
而Exception3异常是该方法的某段逻辑出错,程序员自己作了处理在该段逻辑错误的情况下抛出异常Exception3,则调用者也需要处理。
- 如果方法体Throws Exception并没有被处理,方法头一定要声明throws这个Exception
- 如果方法体没有具体Throws Exception,方法头声明throws这个Exception可以有可以不用加
时间: 2024-10-20 00:19:29