糯米文學吧

位置:首頁 > 計算機 > java語言

JAVA中throws和throw有什麼區別

java語言1.62W

一直對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拋出該方法可能拋出的異常,否則編譯會報錯

標籤:JAVA throws throw