练习作业

【上机作业】【java】2010.4.14 异常处理

异常:java程序在运行时出现的错误,并非语法错误。
java如何进行异常处理
提供的系统类库
Error :java 系统进行处理
Exception:由程序员处理
java进行异常处理的方法
(1)try
     {//可能有错误的代码
     } catch(异常处理类 异常处理对象)
 finaly{
//不管有无代码,都要执行的代码
  }
例1:class Byzero
   {
     public static void main(String args[])
   {int a=5,b=0;
   try
   {
    a=a/b;
    System.out.println(“a=”+a);
   }catch(ArithmeticException e)
    { System.out.println(“分母不能为零”);
     }
   }
  }
例2:
class ArrayExam
{  public static void main(String args[])
  {int a[]=new int[10];
try
  {
   for(int i=0;i<=a.length;i++)
   {a[i]=i;
   }
  }
catch(ArrayIndexOutOfBoundsException e)
{
  System.out.println(“数组下标超界”);
}
 }
}
(2)抛出异常throws(由方法抛出异常,谁调用该方法谁进行错误处理)
class Byzero
   {
     public void yunsuan() throws ArrayIndexOutOfBoundsException
     {int a=5,b=0;
       a=a/b;
      System.out.println(“a=”+a);
     }
     public static void main(String args[])
   {
   try
   {
    Byzero b=new Byzero();
    b.yunsuan();
   }catch(ArithmeticException e)
    { System.out.println(“分母不能为零”);
     }
   }
  }
 

 (1)编写一程序,生成和捕获 ArrayIndexOutOfBoundsException(数组下标越界)类型的异常。

class ArrayTest{

       char c[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’};

       public void run()throws ArrayIndexOutOfBoundsException{

              for(int i=0;i<=c.length;i++){

                     System.out.print(“c[“+i+”]=”+c[i]+”t”);

              }

       }

       public static void main(String []args){

       ArrayTest a=new ArrayTest();

       try{

              a.run();

       }

       catch(ArrayIndexOutOfBoundsException e){

              System.out.println(“下标越界”);

       }

       }

}

 (2)从键盘输入圆的半径,计算圆的面积和周长,有半径类型错误捕获的语句。

import java.text.DecimalFormat;

class RadiiException extends Exception{

}

class circle{

       double radii;

       circle(double r) throws RadiiException {

              radii=r;

       if(r<=0) throw new RadiiException();

       }

       void getgirth(){

       DecimalFormat format=new DecimalFormat(“#.000”);

       String newDouble = format.format(2*radii*3.14);

       System.out.println(“周长为:”+newDouble);

       }

       void getarea(){

       DecimalFormat format=new DecimalFormat(“#.000”);

       String newDouble = format.format(radii*radii*3.14);

       System.out.println(“周长为:”+newDouble);

       }

       public static void main(String []args){

              System.out.println(“——圆(1)——-“);

              try{

              circle c1=new circle(5.2);

              c1.getgirth();

              c1.getarea();

              }

              catch(RadiiException e){

              System.out.print(“半径需要大于0”);

              }

              System.out.println(“——————“);

              System.out.println(“——圆(2)——-“);

              try{

              circle c2=new circle(-1);

              c2.getgirth();

              c2.getarea();

              }

              catch(RadiiException e){

              System.out.println(“半径需要大于0”);

              }

              System.out.println(“——————“);

       }

}

发表评论

电子邮件地址不会被公开。 必填项已用*标注