av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

java語言

JAVA中throws和throw有什么區(qū)別

時間:2025-04-28 14:04:05 java語言 我要投稿
  • 相關(guān)推薦

JAVA中throws和throw有什么區(qū)別

  一直對java中的throws和throw不太理解。你知道JAVA中throws和throw有什么區(qū)別嗎?下面是小編為大家?guī)淼年P(guān)于JAVA中throws和throw有什么區(qū)別的知識,歡迎閱讀。

  throw:(針對對象的做法)

  拋出一個異常,可以是系統(tǒng)定義的,也可以是自己定義的。下面舉兩個例子:

  拋出Java中的一個系統(tǒng)異常:

  public class One {

  public void yichang(){

  NumberFormatException e = new NumberFormatException();

  throw e;

  }

  public static void main(String[] args){

  One test = new One();

  try{

  test.yichang();

  }catch(NumberFormatException e){

  System.out.println(e.getMessage());

  }

  }

  }

  拋出一個自定義的異常:

  public class People {

  public static int check(String strage) throws MyException{

  int age = Integer.parseInt(strage);

  if(age < 0){

  throw new MyException("年齡不能為負(fù)數(shù)!");

  }

  return age;

  }

  public static void main(String[] args){

  try{

  int myage = check("-101");

  System.out.println(myage);

  }catch(NumberFormatException e){

  System.out.println("數(shù)據(jù)格式錯誤");

  System.out.println("原因:" + e.getMessage());

  }catch(MyException e){

  System.out.println("數(shù)據(jù)邏輯錯誤");

  System.out.println("原因:" + e.getMessage());

  }

  }

  }

  public class MyException extends Exception{

  private static final long serialVersionUID = 1L;

  private String name;

  public MyException(String name){

  this.name = name;

  }

  public String getMessage(){

  return this.name;

  }

  }

  throws:(針對一個方法拋出的異常)

  拋出一個異常,可以是系統(tǒng)定義的,也可以是自己定義的。

  拋出java中的一個系統(tǒng)異常:

  public class One {

  public void yichang() throws NumberFormatException{

  int a = Integer.parseInt("10L");

  }

  public static void main(String[] args){

  One test = new One();

  try{

  test.yichang();

  }catch(NumberFormatException e){

  System.out.println(e.getMessage());

  }

  }

  }

  拋出一個自定義異常:

  public class People {

  public static int check(String strage) throws MyException{

  int age = Integer.parseInt(strage);

  if(age < 0){

  throw new MyException("年齡不能為負(fù)數(shù)!");

  }

  return age;

  }

  public static void main(String[] args){

  try{

  int myage = check("-101");

  System.out.println(myage);

  }catch(NumberFormatException e){

  System.out.println("數(shù)據(jù)格式錯誤");

  System.out.println("原因:" + e.getMessage());

  }catch(MyException e){

  System.out.println("數(shù)據(jù)邏輯錯誤");

  System.out.println("原因:" + e.getMessage());

  }

  }

  }

  public class MyException extends Exception{

  private static final long serialVersionUID = 1L;

  private String name;

  public MyException(String name){

  this.name = name;

  }

  public String getMessage(){

  return this.name;

  }

  }

  那么下面我要說究竟什么時候用哪種:

  如果是系統(tǒng)異常的話可以什么都不用做,也可以針對方法拋出一個異常,因為系統(tǒng)異常是可以被系統(tǒng)自動捕獲的,所以這個異常究竟是要在方法內(nèi)部解決還是交給上層函數(shù)去解決其實效果是一樣的。但是我查了很多資料,即使會拋出異常能被系統(tǒng)所捕獲的話還是建議針對方法寫一個throws,因為這樣在完成一個大型任務(wù)的時候可以讓別的程序員知道這里會出現(xiàn)什么異常。

  如果是自己定義的異常,則必須要用throws拋出該方法可能拋出的異常,否則編譯會報錯


【JAVA中throws和throw有什么區(qū)別】相關(guān)文章:

Java編程中throw和throws子句的使用方法08-26

Java和Python有什么區(qū)別09-06

java和C++有什么區(qū)別09-05

java SE和EE有什么區(qū)別08-01

java知識:JDK和JRE有什么區(qū)別08-08

Java面試實例int和Integer有什么區(qū)別?06-09

WLAN和WIFI有什么區(qū)別06-26

警校和軍校有什么區(qū)別10-07

Unix和Linux有什么區(qū)別07-24