Java異常(習(xí)題)_第1頁(yè)
Java異常(習(xí)題)_第2頁(yè)
Java異常(習(xí)題)_第3頁(yè)
Java異常(習(xí)題)_第4頁(yè)
Java異常(習(xí)題)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、java異常(習(xí)題)Key Point* 異常的概念和分類* 異常的產(chǎn)生和傳遞* 異常的處理* 自定義異常練習(xí)1. 填空J(rèn)ava 中所有的錯(cuò)誤都繼承自_類;在該類的子類中,_類表示嚴(yán)重的底層錯(cuò)誤,對(duì)于這類錯(cuò)誤一般處理的方式是_;_類表示例外、異常。2. 查api,填空異常類java.rmi.AlreadyBoundException,從分類上說,該類屬于_(已檢查|未檢查)異常,從處理方式上說,對(duì)這種異常_;異常類java.util.regex.PatternSyntaxException,從分類上說,該類屬于_(已檢查|未檢查)異常,從處理方式上說,對(duì)這種異常_。3. (異常的產(chǎn)生)把下面代

2、碼補(bǔ)充完整package exception;public class TestThrow public static void main(String args) throwException(10);public static void throwException(int n) if (n = 0) / 拋出一個(gè)NullPointerException else / 拋出一個(gè)ClassCastException/ 并設(shè)定詳細(xì)信息為“類型轉(zhuǎn)換出錯(cuò)”4. (try-catch-finally)有如下代碼:import java.io.*;import java.sql.*;class Tes

3、tException public static void main(String args) System.out.println("main 1");int n;/ 讀入nma(n);System.out.println("main2");public static void ma(int n) try System.out.println("ma1");mb(n);System.out.println("ma2"); catch (EOFException e) System.out.println(&quo

4、t;Catch EOFException"); catch (IOException e) System.out.println("Catch IOException"); catch (SQLException e) System.out.println("Catch SQLException"); catch (Exception e) System.out.println("Catch Exception"); finally System.out.println("In finally");pub

5、lic static void mb(int n) throws Exception System.out.println("mb1");if (n = 1)throw new EOFException();if (n = 2)throw new FileNotFoundException();if (n = 3)throw new SQLException();if (n = 4)throw new NullPointerException();System.out.println("mb2");問:當(dāng)讀入的n 分別為1,2,3,4,5 時(shí),輸出的結(jié)果

6、分別是什么?5. (自定義異常)創(chuàng)建兩個(gè)自定義異常類MyException1 和MyException2。要求:1) MyException1 為已檢查異常,MyException2 為未檢查異常2) 這兩個(gè)異常均具有兩個(gè)構(gòu)造函數(shù),一個(gè)無參,另一個(gè)帶字符串參數(shù),參數(shù)表示產(chǎn)生異常的詳細(xì)信息。6. (自定義異常)在上一題的基礎(chǔ)上,把下面代碼補(bǔ)充完整。public class TestMyException public static void main(String args) int n;/ 讀入ntry m(n); catch (MyException1 ex1) / 輸出ex1 詳細(xì)的方法調(diào)

7、用棧信息 catch (MyException2 ex2) / 輸出ex2 的詳細(xì)信息/ 并把ex2 重新拋出public static void m(int n) / 聲明拋出MyException1if (n = 1) / 拋出MyException1/ 并設(shè)定其詳細(xì)信息為“n = 1” else / 拋出MyException2/ 并設(shè)定其詳細(xì)信息為“n = 2”7. (try-catch)代碼改錯(cuò)。class MyException class TestException public static void main(String args) ma();public static i

8、nt ma() try m();return 100; catch (Exception e) System.out.println("Exception"); catch (ArithmeticException e) System.out.println("ArithmeticException");public static void m() throw new MyException();8. (方法覆蓋)有如下代碼class Super public void ma() throws IOException interface IA void

9、mb();class MySub extends Super implements IA public void ma()/ 1_public void mb()/ 2_問:在/1 處,填入以下_代碼可以編譯通過,在/2 處,填入_代碼可以編譯通過。A. throws java.io.IOExceptionB. throws java.io.FileNotFoundException, java.io.EOFExceptionC. throws java.sql.SQLExceptionD. 不能拋出任何異常。9. *(異常處理)有如下代碼import java.io.*;import jav

10、a.sql.*;public class TestTryCatch public static void main(String args) try ma(10);System.out.println("No Exception"); catch (EOFException ex1) System.out.println("ex1"); catch (IOException ex2) System.out.println("ex2"); catch (SQLException ex3) System.out.println("

11、;ex3");public static void ma(int n) throws Exception if (n = 1) throw new IOException(); else if (n = 2) throw new EOFException(); else if (n = 3) throws new SQLException();選擇正確答案:A 編譯不通過B 編譯通過,輸出No ExceptionC 編譯通過,輸出ex1D 編譯通過,輸出ex2E 編譯通過,輸出ex310. *(try-catch,局部變量)有如下代碼public class TestTryCatch

12、 public static void main(String args) System.out.println(ma();public static int ma() int n;try n = 10 / 0; catch (Exception e) return n;選擇正確答案:A. 編譯不通過B. 編譯通過,輸出-1C. 編譯通過,輸出011. *(try-catch-finally)有如下代碼public class TestFinally public static void main(String args) System.out.println(ma();public stat

13、ic int ma() int b=0;/ 讀入btry int n = 100;return n / b; catch (Exception e) return 10; finally return 100;在ma 中,當(dāng)讀入的b 為100 時(shí),輸出結(jié)果為_,當(dāng)讀入的b 為0 時(shí),輸出結(jié)果為_。12. *(try-finally)寫出下面代碼運(yùn)行的結(jié)果public class TestTryFinally public static void main(String args) try ma(); catch (Exception ex1) public static void ma() t

14、hrows Exception int n = 10;int b;/ 讀入一個(gè)整數(shù)btry System.out.println("ma1");int result = n / b;System.out.println("ma2 " + result); finally System.out.println("In Finally");在ma 中,讀入整數(shù)b,如果讀入的值為10,則輸出:如果讀入的值為0,則輸出:13. *(方法覆蓋)class MySuper public void m() throws IOException cl

15、ass MySub extends MySuper public void m() throws EOFException class MySub2 extends MySub public void m() throws FileNotFoundException 以上代碼是否能編譯通過?如果不能,應(yīng)該如何修改?14. *(自定義異常)完成某個(gè)計(jì)費(fèi)系統(tǒng)的用戶登錄和注冊(cè)模塊,要求如下:1) 創(chuàng)建一個(gè)User 類,包括:用戶登錄名(username)、密碼(password)、用戶真實(shí)姓名(name)、電子郵件地址(email)屬性和相應(yīng)的構(gòu)造方法及set/get 方法。2) 創(chuàng)建兩個(gè)自定義異常

16、類,一個(gè)LoginException,表示登錄異常。一個(gè)RegisterException,表示注冊(cè)異常。自定義的兩個(gè)異常,都要求有一個(gè)接受字符串類型參數(shù)的構(gòu)造方法。3) 創(chuàng)建一個(gè)UserBiz 接口,該接口中定義兩個(gè)方法:void register(String username, String password, String password2,String name, String email) throws RegisterException /用戶注冊(cè)void login(String username, String password) throws LoginException

17、 /用戶登錄其中register 方法接受兩個(gè)password 參數(shù),原因是:在用戶注冊(cè)時(shí),需要輸入兩遍password,只有兩次輸入的password 一致,才允許注冊(cè)。4) 創(chuàng)建UserBiz 接口的實(shí)現(xiàn)類。其中為該實(shí)現(xiàn)類創(chuàng)建一個(gè)屬性,該屬性為一個(gè)Map,用來保存已注冊(cè)的用戶信息。Map的鍵為用戶登錄名,值為登錄名對(duì)應(yīng)的User 對(duì)象。初始情況下,Map 中保存的對(duì)象為以下兩個(gè):用戶名 密碼 真實(shí)姓名 電子郵件/admin admin Administrator admin/tom cat tomcat tomcatregister 方法在以下兩種情況下拋出異常:1)

18、username 在Map 中已存在2) 兩次輸入的password 不一致login 方法在以下兩種情況下拋出異常:1) username 不存在2) username 和password 不匹配5) 創(chuàng)建一個(gè)UserView 接口,該接口中定義兩個(gè)方法:void login();void register();6) 創(chuàng)建UserView 接口的實(shí)現(xiàn)類。該實(shí)現(xiàn)類的login 方法中,利用命令行,讓用戶輸入用戶名和密碼,之后調(diào)用UserBiz中的login 方法。部分代碼如下:void login()System.out.println(“請(qǐng)輸入用戶名:”);String username =

19、 ;System.out.println(“請(qǐng)輸入密碼”);String password = ;/調(diào)用UserBiz 中的login 方法該類的register 方法采用類似的方法,讓用戶輸入注冊(cè)時(shí)需要的信息,然后調(diào)用UserBiz 中的register 方法。注意:1、 密碼應(yīng)該讓用戶輸入兩遍。2、 UserViewImpl 中應(yīng)當(dāng)有一個(gè)UserBiz 類型的屬性7) 編寫測(cè)試代碼。類圖如下:  15. *(異常的捕獲和拋出)有以下代碼:import java.io.*;import java.sql.*;public class TestMyException pub

20、lic static void main(String args) try System.out.println("main1");ma();System.out.println("main2"); catch (Exception e) System.out.println("Catch Exception in main");System.out.println(e.getMessage();public static void ma() throws IOException try System.out.println(&quo

21、t;ma1");mb();System.out.println("ma2"); catch (SQLException e) System.out.println("Catch SQLException in ma");throw new IOException(e.getMessage(); catch (Exception e) System.out.println("Catch Exception in ma");System.out.println(e.getMessage();public static void mb() throws SQLException throw new SQLException("

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論