1.throws是在方法上对一个方法进行声明,而不进行处理,向上传,谁调用谁处理;
格式: 权限修饰符 返回值类型 方法名(参数列表) throws Exception1,Exception2...{}
目的是声明这些异常,告诉方法的调用者它可能会抛出这些异常,是否需要捕获处理这些异常。
2.throw是实际抛出某个异常对象e
try { String s=""; s.substring(0,2); } catch (Exception e) { // TODO Auto-generated catch block throw e; }
3.throws:一旦发生bug,程序就会立即转入异常处理阶段,后面的语句就不再执行了,而且所在的方法不再返回有意义的值
4.如果a函数里调用b函数,b函数有throws声明,即b函数抛出异常给它的上一级,a函数必须使用try catch捕获,否则必须把a也声明为throws继续向上抛出,直到这个异常被捕获。
5.Exception分为CheckedException跟RuntimeException,运行时异常会被JVM自动一层一层往上抛,直到某一层遇到处理为止,如果都没有处理那么最终出现两种情况,如果是单线程会由
main方法抛出并退出程序。如果是多线程,主线程抛出异常整个程序终止,非主线程抛出则线程终止。
6.不捕获也不抛出的异常,系统会自动抛出,throw则是主动抛出