异常处理-课后作业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理-课后作业相关的知识,希望对你有一定的参考价值。
1.请阅读并运行AboutException.java示例,然后通过后面的几页PPT了解Java中实现异常处理的基础知识。
import javax.swing.*;
class AboutException
{
public static void main(String[] a)
{
int i=1, j=0, k;
k=i/j;
try
{
k = i/j; // Causes division-by-zero exception
//throw new Exception("Hello.Exception!");
}
catch ( ArithmeticException e)
{
System.out.println("被0除. "+ e.getMessage());
}
catch (Exception e)
{
if (e instanceof ArithmeticException)
System.out.println("被0除");
else
{
System.out.println(e.getMessage());
}
}
finally
{
OptionPane.showConfirmDialog(null,"OK");
}
}
}
【运行截图】
2.阅读以下代码(CatchWho.java),写出程序运行结果:
public class CatchWho
{
public static void main(String[] args)
{
try
{
try
{
throw new ArrayIndexOutOfBoundsException();
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch");
}
throw new ArithmeticException();
}
catch(ArithmeticException e)
{
System.out.println("发生ArithmeticException");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch");
}
}
}
运行截图:
3.写出CatchWho2.java程序运行的结果
{
try
{
try
{
throw new ArrayIndexOutOfBoundsException();
}
catch(ArithmeticException e)
{
System.out.println( "ArrayIndexOutOfBoundsException" + "/内层try-catch");
}
throw new ArithmeticException();
}
catch(ArithmeticException e)
{
System.out.println("发生ArithmeticException");
}
catch(ArrayIndexOutOfBoundsException e)
{
System.out.println( "ArrayIndexOutOfBoundsException" + "/外层try-catch");
}
}
}
运行截图:
4.当有多个嵌套的try…catch…finally时,要特别注意finally的执行时机。
public class EmbedFinally
{
public static void main(String args[])
· {
int result;
try
{
System.out.println("in Level 1");
try
{
System.out.println("in Level 2");
// result=100/0; //Level 2
try
{
System.out.println("in Level 3");
result=100/0; //Level 3
}
catch (Exception e)
{
System.out.println("Level 3:" + e.getClass().toString());
}
finally
{
System.out.println("In Level 3 finally");
}
// result=100/0; //Level 2
}
catch (Exception e)
{
System.out.println("Level 2:" + e.getClass().toString());
}
finally
{
System.out.println("In Level 2 finally");
}
// result = 100 / 0; //level 1
}
catch (Exception e)
{
System.out.println("Level 1:" + e.getClass().toString());
}
finally
{
System.out.println("In Level 1 finally");
}
}
}
【运行截图】
5.
public class SystemExitAndFinally
{
public static void main(String[] args)
{
try
{
System.out.println("in main");
throw new Exception("Exception is thrown in main");
//System.exit(0);
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.exit(0);
}
finally
{
System.out.println("in finally");
}
}
}
运行截图:
分析:finally一般会被执行,但也会有不执行的时候,
它的运行结果只有
in main
Exception is thrown in main
finally并没有执行,因为 System.exit(status);这个方法是用来结束当前正在运行中的java虚拟机。如何status是非零参数,那么表示是非正常退出。
6、编写一个程序,此程序在运行时要求用户输入一个整数,代表某门课的沉积,程序接着给出“不及格”,“及格”,“中”,“良”,“优”的结论。
答:
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
Scanner con=new Scanner(System.in);
try
{
System.out.println("请输入成绩:");
int ch=con.nextInt();
if(ch<60&&ch>=0)
{
System.out.println("不及格");
}
else
if(ch==60)
{
System.out.println("及格");
}
else
if(ch>60&&ch<80)
{
System.out.println("中");
}
else
if(ch>=80&&ch<90)
{
System.out.println("良");
}
else
if(ch>=90&&ch<=100)
{
System.out.println("优");
}
}
catch(ArrayStoreException e)
{
e.printStackTrace();
}
finally
{
System.out.println("Over");
System.exit(0);
}
}
}
截图:
以上是关于异常处理-课后作业的主要内容,如果未能解决你的问题,请参考以下文章