📅  最后修改于: 2020-04-05 11:29:19             🧑  作者: Mango
先决条件:异常处理,try-catch中进行控制
1)以下程序的输出是什么?
public class Test
{
public static void main(String[] args)
{
try
{
System.out.printf("1");
int sum = 9 / 0;
System.out.printf("2");
}
catch(ArithmeticException e)
{
System.out.printf("3");
}
catch(Exception e)
{
System.out.printf("4");
}
finally
{
System.out.printf("5");
}
}
}
a)1325
b)1345
c)1342
d)135
答案。(d)
说明:一旦try块中发生异常,执行将转到相应的catch语句,并且不会返回到try块。一次仅执行一个catch块。无论是否发生异常,总是执行finally块。
2)以下程序的输出是什么?
public class Test
{
private void m1()
{
m2();
System.out.printf("1");
}
private void m2()
{
m3();
System.out.printf("2");
}
private void m3()
{
System.out.printf("3");
try
{
int sum = 4/0;
System.out.printf("4");
}
catch(ArithmeticException e)
{
System.out.printf("5");
}
System.out.printf("7");
}
public static void main(String[] args)
{
Test obj = new Test();
obj.m1();
}
}
a)35721
b)354721
c)3521
d)35
答案。(a)
说明:如果在catch语句中处理了异常,则在执行与该异常对应的catch语句之后,程序将继续其正常执行。此外,当try块中发生异常时,将不执行try块中的其余程序。
3)以下程序的输出是什么?
public class Test
{
public static void main(String[] args)
{
try
{
System.out.printf("1");
int data = 5 / 0;
}
catch(ArithmeticException e)
{
System.out.printf("2");
System.exit(0);
}
finally
{
System.out.printf("3");
}
System.out.printf("4");
}
}
a)12
b)1234
c)124
d)123
答案。(a)
说明:只有在程序中显式调用System.exit(0)时,finally块中的代码才被执行。然后调用exit语句,程序终止,无需执行任何其他操作。
4)以下程序的输出是什么?
public class Test
{
public static void main(String[] args)
{
try
{
System.out.printf("1");
int data = 5 / 0;
}
catch(ArithmeticException e)
{
Throwable obj = new Throwable("Sample");
try
{
throw obj;
}
catch (Throwable e1)
{
System.out.printf("8");
}
}
finally
{
System.out.printf("3");
}
System.out.printf("4");
}
}
a)编译错误
b)运行时错误
c)1834
d)134
答案。(c)
说明:可以在catch子句中引发异常。这样做是为了在运行时更改异常类型。通过创建程序中所示的Throwable类的实例,可以引发catch子句中的异常。
5)以下程序的输出是什么?
import java.io.EOFException;
import java.io.IOException;
public class Test
{
public static void main(String[] args)
{
try
{
System.out.printf("1");
int value = 10 / 0;
throw new IOException();
}
catch(EOFException e)
{
System.out.printf("2");
}
catch(ArithmeticException e)
{
System.out.printf("3");
}
catch(NullPointerException e)
{
System.out.printf("4");
}
catch(IOException e)
{
System.out.printf("5");
}
catch(Exception e)
{
System.out.printf("6");
}
}
}
a)1346
b)136726
c)136
d)13
答案。(d)
说明:在多捕获语句中,必须从更具体到更一般的顺序例外,仅执行一个最特定于发生的异常的catch语句。