第八章练习题(异常)
(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