📜  Java程序的输出| 12(异常处理)

📅  最后修改于: 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语句。