日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 异常练习题_Java 异常(习题)

發布時間:2024/9/27 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 异常练习题_Java 异常(习题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

異常

Key Point

* 異常的概念和分類

* 異常的產生和傳遞

* 異常的處理

* 自定義異常

練習

1. 填空

Java 中所有的錯誤都繼承自throwable類;在該類的子類中,

Error類表示嚴重的底層錯誤,對于這類錯誤一般處理的方式是不要求我們對其處理

Exception類表示例外、異常。

2. 查api,填空

異常類java.rmi.AlreadyBoundException,從分類上說,該類屬于已檢查(已檢查|

未檢查)異常,從處理方式上說,對這種異常 必須處理,進行聲明拋出或異常捕獲;

異常類java.util.regex.PatternSyntaxException,從分類上說,該類屬于未檢查(已檢

查|未檢查)異常,從處理方式上說,對這種異常不作處理。

3. (異常的產生)把下面代碼補充完整

public class TestThrow{

public static void main(String args[]){

throwException(10);

}

public static void throwException(int n){

if (n == 0){

//拋出一個NullPointerException

throw new

NullPointerException();}else{

//拋出一個ClassCastException

//并設定詳細信息為“類型轉換出錯”

throw new

ClassCastException("類型轉換出錯");}

}

}

4. (try-catch-finally)有如下代碼:

import java.io.*;

import java.sql.*;

class TestException{

public static void main(String args[]){

System.out.println(“main 1”);

int n;

//讀入n

ma(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(“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”);

}

}

public 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”);

}

}

問:當讀入的n 分別為1,2,3,4,5 時,輸出的結果分別是什么?

結果: n = 1

main 1

ma1

mb1

Catch EOFException

In finally

main2

n = 2

main 1

ma1

mb1

Catch IOException

In finally

main2

n = 3

main 1

ma1

mb1

Catch SQLException

In finally

main2

n = 4

main 1

ma1

mb1

Catch Exception

In finally

main2

n = 5

main 1

ma1

mb1

mb2

ma2

In finally

main25. (自定義異常)創建兩個自定義異常類MyException1

和MyException2。

要求:

1) MyException1 為已檢查異常,MyException2 為未檢查異常

2) 這兩個異常均具有兩個構造函數,一個無參,另一個帶字符串參數,參數表示產生

異常的詳細信息。

public class MyException1 extends

Exception{

public MyException1() {

}

public

String MyException1(String str) {

return str;

}

}

public class MyException2

extends RuntimeException{

public MyException2() {

}

public String MyException2(String str) {

return str;

}

}6.

(自定義異常)在上一題的基礎上,把下面代碼補充完整。

public class TestMyException{

static MyException1 me = new

MyException1();public static void main(String

args[]){

int n;

//讀入n

try{

m(n);

}catch(MyException1 ex1){

//輸出ex1 詳細的方法調用棧信息

System.out.println(me.getStackTrace1());

}catch(MyException2 ex2){

//輸出ex2 的詳細信息

//并把ex2 重新拋出

String str = "n == 2";

System.out.println(ex2.MyException2(str));

throw new

MyException2();}

}

public static void m(int n)_________ { //聲明拋出MyException1

if (n == 1) {

//拋出MyException1

//并設定其詳細信息為“n == 1”

String str = "n == 1";

me.setStackTrace(str);

throw new

MyException1();

}else {

//拋出MyException2

//并設定其詳細信息為“n == 2”

throw new

MyException2();}

}

}

7. (try-catch)代碼改錯。

class MyException extends

Exception{}

class TestException{

public static void main(String args[]){

ma();

}

public static int ma(){

try{

m();

return 100;

}catch(Exception e){

System.out.println(“Exception”);

return 0;}

//catch(ArithmeticException e){

//System.out.println(“ArithmeticException”);

//}}

public static void m()throws MyException{

throw new MyException();

}

}

8. (方法覆蓋)有如下代碼

import java.io.IOException;

class Super{

public void ma() throws IOException{}

}

interface IA{

void mb();

}

public class MySub extends Super implements IA{

public void ma() //1_________{

}

public void mb() //2_________{

}

}

問:

在//1 處,填入以下________代碼可以編譯通過,在//2 處,填入_________代碼可以編譯

通過。

A. throws java.io.IOException

B. throws java.io.FileNotFoundException, java.io.EOFException

C. throws java.sql.SQLException

D. 不能拋出任何異常。

9. *(異常處理)有如下代碼

import java.io.*;

import java.sql.*;

public class TestTryCatch{

public static void main(String args[])throws

Exception{

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(“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) {

throw new SQLException();

}

}

}

選擇正確答案:

A. 編譯不通過

B. 編譯通過,輸出No Exception

C. 編譯通過,輸出ex1

D. 編譯通過,輸出ex2

E. 編譯通過,輸出ex3

結果:A

10. *(try-catch,局部變量)有如下代碼

public class TestTryCatch{

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. 編譯通過,輸出-1

C. 編譯通過,輸出0

結果:A.

11. *(try-catch-finally)有如下代碼

public class TestFinally{

public static void main(String args[]){

System.out.println ( ma() );

}

public static int ma(){

int b;

//讀入b

try{

int n = 100;

return n/b;

}catch(Exception e){

return 10;

}finally{

return 100;

}

}

}

在ma 中,當讀入的b 為100 時,輸出結果為__100__,當讀入的b 為0 時,輸出結果為

__100___。12.

*(try-finally)寫出下面代碼運行的結果

public class TestTryFinally{

public static void main(String args[]){

try{

ma();

}catch(Exception ex1){

}

}

public static void ma() throws Exception {

int n = 10;

int b;

//讀入一個整數b

try{

System.out.println(“ma1”);

int result = n / b;

System.out.println(“ma2 ” + result);

}finally{

System.out.println(“In Finally”);

}

}

}

在ma 中,讀入整數b,如果讀入的值為10,則輸出:

ma1

ma2 =1

In Finally如果讀入的值為0,則輸出:

ma1

In Finally

13. *(方法覆蓋)

import java.io.*;

class MySuper{

public void m() throws IOException{}

}

class MySub extends MySuper{

public void m() throws EOFException, FileNotFoundException{}

}

class MySub2 extends MySub {

public void m() throws FileNotFoundException{}

}

以上代碼是否能編譯通過?如果不能,應該如何修改?

14. *(自定義異常)完成某個計費系統的用戶登錄和注冊模塊,要求如下:

1) 創建一個User 類,包括:用戶登錄名(username)、密碼(password)、用戶真實姓

名(name)、電子郵件地址(email)屬性和相應的構造方法及set/get 方法。

2) 創建兩個自定義異常類,一個LoginException,表示登錄異常。一個RegisterException,

表示注冊異常。自定義的兩個異常,都要求有一個接受字符串類型參數的構造方法。

3) 創建一個UserBiz 接口,該接口中定義兩個方法:

void register(String username, String password, String

password2,

String name, String email) throws RegisterException //用戶注冊

void login(String username, String password) throws LoginException

//用戶登錄

其中register 方法接受兩個password 參數,原因是:在用戶注冊時,需要輸入兩遍

password,只有兩次輸入的password 一致,才允許注冊。

4) 創建UserBiz 接口的實現類。其中

為該實現類創建一個屬性,該屬性為一個Map,用來保存已注冊的用戶信息。Map

的鍵為用戶登錄名,值為登錄名對應的User 對象。初始情況下,Map 中保存的對

象為以下兩個:

用戶名 密碼 真實姓名 電子郵件

admin admin Administrator admin@123.com

tom cat tomcat tomcat@cat.com

register 方法在以下兩種情況下拋出異常:

1) username 在Map 中已存在

2) 兩次輸入的password 不一致

login 方法在以下兩種情況下拋出異常:

1) username 不存在

2) username 和password 不匹配

5) 創建一個UserView 接口,該接口中定義兩個方法:

void login();

void register();

6) 創建UserView 接口的實現類。

該實現類的login 方法中,利用命令行,讓用戶輸入用戶名和密碼,之后調用UserBiz

中的login 方法。部分代碼如下:

void login(){

System.out.println(“請輸入用戶名:”);

String username = ;

System.out.println(“請輸入密碼”);

String password = ;

//調用UserBiz 中的login 方法

}

該類的register 方法采用類似的方法,讓用戶輸入注冊時需要的信息,然后調用

UserBiz 中的register 方法。

注意:

1、 密碼應該讓用戶輸入兩遍。

2、 UserViewImpl 中應當有一個UserBiz 類型的屬性

7) 編寫測試代碼。

類圖如下:

15. **(異常的捕獲和拋出)有以下代碼:

import java.io.*;

import java.sql.*;

public class TestMyException{

public 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("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("sql exception in mb");

}

}

問:該程序輸出結果是什么?

16. **(異常的捕獲和拋出)有以下代碼

public class TestException{

public static void main(String args[]){

try{

System.out.println(“main1”);

ma();

System.out.println(“main2”);

}catch(Exception e){

System.out.println(“In Catch”);

}

}

public static void ma(){

System.out.println(“ma1”);

throw new NullPointerException();

System.out.println(“ma2”);

}

}

選擇正確答案:

A. 編譯出錯

B. 編譯正常,輸出main1 ma1 In Catch

C. 編譯正常,運行時出錯

17. **(異常的捕獲和拋出)有如下代碼

import java.io.*;

import java.sql.*;

class TestException{

public static void main(String args[]){

try{

ma();

}

catch(Exception e){}

}

public static void ma() throws IOException{ }

}

下面哪些代碼放在處可以編譯通過?

A. catch(NullPointerException npe){}

B. catch(IOException ioe){}

C. catch(SQLException sqle){}

18. **(finally)有如下代碼

public class TestTryAndTry {

public static void main(String args[]){

System.out.println(ma());

}

public static int ma(){

try{

return 100;

}finally{

try{

return 200;

}finally{

return 500;

}

return 1000;

}

}

}

選擇正確答案:

A. 編譯錯誤

B. 輸出100

C. 輸出200

D. 輸出500

E. 輸出1000

總結

以上是生活随笔為你收集整理的java 异常练习题_Java 异常(习题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。