区别一:
throw 是语句抛出一个异样;throws 是办法抛出一个异样;
throw 语法:throw < 异样对象 >
在办法申明中,增加 throws 子句示意该办法将抛出异样。如果一个办法会有异样,但你并不想解决这个异样,就在办法名前面用 throws, 这样这个异样就会抛出,谁调用了这个办法谁就要解决这个异样,或者持续抛出.
throws 语法:[< 修饰符 >]< 返回值类型 >< 办法名 >([< 参数列表 >])[throws< 异样类 >]
其中:异样类能够申明多个,用逗号宰割。
区别二:
throw 要么和 try-catch-finally 语句配套应用,要么与 throws 配套应用。但 throws 能够独自应用,而后再由解决异样的办法捕捉。
分割一:
try …. catch 就是用 catch 捕捉 try 中的异样,并解决;catch 是捕捉异样。也就是说某一个操作有可能会抛出什么异样。throw 就是不解决异样,间接抛出异样
调用一个会 throws exception 的办法(在办法定义的时候能够用 throws 实现)时,须要把这个办法放在 try 里,而后用 catch 破获这个 exception,做相应的解决。
throw new exception()是抛出一个 exception,由别的 method 来破获它。
也就是说 try….catch 是为破获他人的 exception 用的,而 throw 是本人抛出 exception 让他人去破获的。
public void input() throws Exception{}
public void outputException(){
try {input();
}
catch(Exception e){System.out.println("Exception");
}
}
简略的说,如果一个办法中用了 throws,那么这个办法会向上抛出一个异样,那么在调用这个办法的时候必须把这个调用放在 try…catch 块里解决这个异样。
对于异样有两种解决办法
1、要么申明异样,也就是在办法名前面加上 throws exceptionname,…, 办法自身只是抛出异样,由函数调用者来捕捉异样。若产生异样,异样会沿着调用栈下移,始终找到与之匹配的解决办法,若达到调用栈底仍未找到,程序终止。
2、要么捕捉异样。通过 try catch 办法,catch 子句中搁置解决异样的语句。
分割二:
对于会感觉会有异样抛出的程序块,用 try{} 包住,而后用 catch 来抓住这个异样,在 catch 中对异样做解决,在 try 中如果有异样的话,程序会转到 catch 而不会中断,通常这两个是配合应用的, 如果你不想因为程序有错,而抛出一大堆异样的话,你就把该程序 try 起来,try 和 catch 只能获取程序运行时引发的异样,而 throw 语句能够引发明确的异样,程序到了 throw 语句这后就立刻进行,不会执行前面的程序,
大家兴许在编程的过程中,会意识到这里出错,但不晓得会抛出什么异样,也是一件头疼的事,现将这部分总结如下:
算术异样类:ArithmeticExecption
空指针异样类:NullPointerException
类型强制转换异样:ClassCastException
数组负下标异样:NegativeArrayException
数组下标越界异样:ArrayIndexOutOfBoundsException
违反平安准则异样:SecturityException
文件已完结异样:EOFException
文件未找到异样:FileNotFoundException
字符串转换为数字异样:NumberFormatException
操作数据库异样:SQLException
输入输出异样:IOException
办法未找到异样:NoSuchMethodException