JAVA中throws和throw有什麼區別
一直對java中的throws和throw不太理解。你知道JAVA中throws和throw有什麼區別嗎?下面是小編為大家帶來的關於JAVA中throws和throw有什麼區別的知識,歡迎閱讀。
throw:(針對物件的做法)
丟擲一個異常,可以是系統定義的.,也可以是自己定義的。下面舉兩個例子:
丟擲Java中的一個系統異常:
public class One {
public void yichang(){
NumberFormatException e = new NumberFormatException();
throw e;
}
public static void main(String[] args){
One test = new One();
try{
ang();
}catch(NumberFormatException e){
tln(essage());
}
}
}
丟擲一個自定義的異常:
public class People {
public static int check(String strage) throws MyException{
int age = eInt(strage);
if(age < 0){
throw new MyException("年齡不能為負數!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
tln(myage);
}catch(NumberFormatException e){
tln("資料格式錯誤");
tln("原因:" + essage());
}catch(MyException e){
tln("資料邏輯錯誤");
tln("原因:" + essage());
}
}
}
public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
= name;
}
public String getMessage(){
return ;
}
}
throws:(針對一個方法丟擲的異常)
丟擲一個異常,可以是系統定義的,也可以是自己定義的。
丟擲java中的一個系統異常:
public class One {
public void yichang() throws NumberFormatException{
int a = eInt("10L");
}
public static void main(String[] args){
One test = new One();
try{
ang();
}catch(NumberFormatException e){
tln(essage());
}
}
}
丟擲一個自定義異常:
public class People {
public static int check(String strage) throws MyException{
int age = eInt(strage);
if(age < 0){
throw new MyException("年齡不能為負數!");
}
return age;
}
public static void main(String[] args){
try{
int myage = check("-101");
tln(myage);
}catch(NumberFormatException e){
tln("資料格式錯誤");
tln("原因:" + essage());
}catch(MyException e){
tln("資料邏輯錯誤");
tln("原因:" + essage());
}
}
}
public class MyException extends Exception{
private static final long serialVersionUID = 1L;
private String name;
public MyException(String name){
= name;
}
public String getMessage(){
return ;
}
}
那麼下面我要說究竟什麼時候用哪種:
如果是系統異常的話可以什麼都不用做,也可以針對方法丟擲一個異常,因為系統異常是可以被系統自動捕獲的,所以這個異常究竟是要在方法內部解決還是交給上層函式去解決其實效果是一樣的。但是我查了很多資料,即使會丟擲異常能被系統所捕獲的話還是建議針對方法寫一個throws,因為這樣在完成一個大型任務的時候可以讓別的程式設計師知道這裡會出現什麼異常。
如果是自己定義的異常,則必須要用throws丟擲該方法可能丟擲的異常,否則編譯會報錯