java課堂練習——異常

來源:互聯網
上載者:User

標籤:res   test   nal   exce   閱讀   ring   系統   轉化   練習   

 

1.請閱讀並運行AboutException.java樣本,然後通過後面的幾頁PPT瞭解Java中實現異常處理的基礎知識。

 

 

 

代碼執行時不發生異常。

jvm在處理浮點數時,產生的是ddiv位元組碼指令,i/0,0轉化為浮點數0.0,而0.0是double類型的,並不精確,所以不會拋出異常。

jvm在處理整數時,產生的是idiv位元組碼指令,整數除0就是除0,會拋出異常。

第一個程式沒有執行finally?

finally 必須與 try 或 try/catch 配合使用。因為並沒有執行try,所以不會執行finally,異常是由系統捕獲的,所以try並沒有拋出。除此之外,不能退出 try 而不執行其 finally 。如果 finally 存在,則它總會執行。(無論從那點看,這個陳述都是正確的。有一種方法可以退出 try 而不執行 finally 。如果代碼在 try 內部執行一條 System.exit(0); 語句,那麼應用程式終止而不會執行finally 執行。另一方面,如果您在 try 執行期間撥掉電源,finally 也不會執行。)

2.閱讀以下代碼(CatchWho.java),寫出程式運行結果:

 

3.寫出CatchWho2.java程式啟動並執行結果

 

4.辨析:finally語句塊一定會執行嗎?

請通過 SystemExitAndFinally.java樣本程式回答上述問題

 

 

此程式中finally並未執行,原因是catch語句中的 System.exit(0);使得程式退出jvm了,所以finally也就不執行了。

總結try catch finally嵌套使用執行順序。

1)try語句嵌套從外層到內層執行,在try語句中,哪一層出錯,哪一層就拋出異常,後邊的try語句就不再執行,如果該層存在catch就進行相應的捕獲,有該層的finally也執行,除非finally遇到不執行的情況;

2)如果該層沒有catch進行捕獲,就向外拋出,去找catch,如果沒有catch進行捕獲,就終止程式。

5.請先閱讀 EmbedFinally.java樣本,再運行它,觀察其輸出並進行總結。

 

1)try拋出一個異常之後,程式會跳出try,不再執行try後邊的語句,開始對catch進行匹配,處理異常;

2)try嵌套中,拋出的異常只有被處理才可以按順序拋出下一個異常,如果不處理,程式就終止;

3)try拋出異常之後,就跳出了try語句,內層catch無法捕獲就繼續向外拋,所以外層也就有異常,外層語句不執行,第二個程式 throw  new ArithmeticExcepption沒有執行。

4)第三個程式,try第一層第二層沒有異常不用捕獲,執行完之後到第三層,除0有異常,catch捕獲,執行第三層的finally然後,順序執行第二層,第一層的finally。

6.編寫一個程式,此程式在運行時要求使用者輸入一個 整數,代表某門課的考試成績,程式接著給出“不及格”、“及格”、“中”、“良”、“優”的結論。

要求程式必須具備足夠的健壯性,不管使用者輸入什 麼樣的內容,都不會崩潰。

原始碼:

import java.util.Scanner;

class cepingcuowuException extends Exception{

public cepingcuowuException(String s){

super(s);

}

}

class fenshu{

int score;

public void panduan(int score){

score=score;

if(score<60)

{

System.out.println("不及格!");

}

if(score>=60){

{

System.out.println("及格!");

if(score<=70)

System.out.print("中");

else if(score<80 && score>=70)

System.out.print("良");

else if(score>=80)

System.out.print("優");

}

}

 

}

}

public class Test {

public static void main(String args[])throws cepingcuowuException{

fenshu fenshu = new fenshu();

System.out.println("請輸入測評成績:");

try{

Scanner in = new Scanner(System.in);

String b = in.next();

    boolean result=b.matches("[0-9]+");

if(result==true)

{

int c=Integer.valueOf(b);

if(c > 100||c < 0)

throw new cepingcuowuException("輸入範圍不正確!");

else

fenshu.panduan(c);

}

if(result == false)

throw new cepingcuowuException("輸入格式錯誤!");

 

}

catch(cepingcuowuException e){

System.out.println(e);

}

}

}

 

程式:   

 

java課堂練習——異常

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.