黑猴子的家:Java SE 练习题第八章

本文深入探讨了Java中的异常处理机制,包括异常的分类、异常的父类、try...catch...finally结构的使用、非受检异常的识别、自定义异常的抛出、方法声明中的异常抛出关键字、特定代码片段的运行结果预测以及异常处理的最佳实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

尾部都有答案

第八章练习题(异常)

(1)Java语言中异常的分类是哪项?

A. 运行时异常和异常
B. 受检异常和非受检异常
C. 错误和异常
D. 错误和运行时异常

(2)所有异常的父类是哪项?

A. Throwable
B. Error
C. RuntimeException
D. Exception

(3)关于try...catch...finally结构,描述正确的是哪项? (选两项)

A. 可以有多个catch
B. 只能有一个catch
C. 可以没有catch
D. finally必须有

(4)下列属于非受检异常的是哪项?

A. SQLException
B. IOException
C. NullPointerException
D. OutOfMemoryError

(5)假设有自定义异常类ServiceException,那么抛出该异常的语句正确的是哪项?

A. raise ServiceException
B. throw new ServiceException()
C. throw ServiceException
D. throws ServiceException 

(6)在方法的声明中,要求该方法必须抛出异常时使用哪个关键字?

A. throw
B. catch
C. finally
D. throws

(7)现有

class Number{
    public static void main(String  []  aras)  {
        try  {
            System.out.print (Integer.parselnt ("forty"));
        } catch (RuntimeException r)  {
            System.out.print ("runtime");
        } catch  (NumberFormatException e)  {
            system..ut.print("number");
        }
    }
}

结果是什么?

A. number
B. runtime
C. forty number
D. 编译失败

(8)现有

void topGo()  {
    try  {
        middleGo();
    )  catch  (Exception e)  {
        System.out.print("catch");
    }
}
void middleGo()  throws Exception  {
    go();
    system.out.print("late middle");
}
void go()  throws ExceptiOn  {
    throw new Exception();
} 

如果调用 topGo () ,则结果为

A. late middle
B. catch
C. late middle catch
D. catch Iate middle

(9)现有

class Calc {
    public static void main(String [] args) {
        try {
            int x = Integer.parselnt ("42a") ;
            //insert code here
            System.out.print ("oops");
        }
    }
}

下面哪两行分别插入到第五行,会导致输 "oops" ? (选两项)

 A. } catch (IllegalArgumentException e) {
 B. } catch (IllegalStateException c) {
 C. } catch (NumbelFormatException n) {
 D. } catch (ClassCastException c) {

(10)现有

class Flow {
    public static void main(String [] args){
        try {
            System. out .print ("before");
            DoRiskyThing ( );
            System.out.print ("after ") ;
        }catch (Exception fe){
            System.out.print ("catch") ;
        }
        System. out .println ( " done") ;
    }
    public static void doRiskyThing() throws Exception{
        // this code returns unless it throws an Exception
    }
}

可能会产生哪两项结果 ?(选两项)

A. before catch
B. before after done
C. before catch done
D. before after catch 

(11)现有

class Birds {
    public static void main (String  []  args)  {
        try {
            throw new Exception () ;
        } catch (Exception e) {
            try {
              throw new Exception () ;
            } catch  (Exception e2){
                System.out.print ("inner"); 
            }
            System. out.print ( "middle" );
        }
        System.out.print ("outer") ;
    }
}
A. inner outer
B. middle outer
C. inner middle outer
D. 编译失败

(12)现有

class  Parser extends  Utilis  {
    public static void main (String  []  args)  {
        try  {
            System. out.print (new  Parser ( ) .getlnt ("42")) ;
        }  catch (NumberFormatException n) {
            System.out .println ( "NFExc" ) ;   
        }
    }
    int getlnt (String arg)  throws NumberFormatException{
        return Integer.parselnt (arg) ;
    }
}
class Utils {
   int getlnt (String arg)  {  return 42;  }
}

结果为

A. NFExc
B. 42
C. 42NFExc
D..编译失败 

(13)现有

class Parser extends Utils  (
    public static void main (String[]  args)    {
        try{
            System.out.print (new Parser().getlnt("42"));
        } catch (Exception e)    {
            System.out.println("Exc");
        }
    }
    int getlnt (String arg) throws Exception  (
        return Integer.parselnt (arg);
    }
}
class Utils  {
    int getlnt (String arg)    {return 42;  }
}

结果为

A. 42
B. Exc
C. 42Exc
D.编译失败

(14)现有

class Propeller2  {
    pulolic static void main (String[]args) { //add code here?  
        new Propeller2().topGo();
    }
    void topGo() { //add code here?
        middleGo();
    }
    void middleGo() {  //add code here?
        go();
        System.out.println ("late middle");
    }
    void go() {  //add code here?
        throw new Exception();
    }
}

为使代码通过编译,需要在哪一行加入声明throws Exception?

A.只在第11行
B.在第8行和第11行
C.在第5行、第8行和第11行
D.在第2行、第5行、第8行和第11行 

(15)现有

class Parser extends Utils {
    public static void main (String  []  args)  {
        try  {  
            System.out.print (new Parser () .getlnt ("42")) 
        }  catch (Exception e) {
            System.out.println ("Exc") ;  }
        }
        int getlnt (String arg)  throws Exception  {
            return Integer.parselnt (arg) ;
        }
    }
class Utils {
    int getlnt ()  {  return 42;  }
}

结果是什么?

A. 42Exc
B. Exc
C. 42
D. 编译失败 

参考答案

1、B
2、A
3、AC
4、D
5、B
6、D
7、D
8、B
9、AC
10、BC
11、C
12、B
13、D
14、D
15、C 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值