异常处理

一、【必做题】

1.写出以下程序的运行结果。(知识点:异常处理机制)

         Static double average(int[] a) throws NullPointerException {

                   Try {

                            Int sum = 0;

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

                                     Sum += a[i];

                            }

                            Return (((double) sum) / a.length);

                   } catch (NullPointerException e) {

                            System.out.println(“NullPointerException”);

                            throw e;

                   }

         }

         Public static void main(String args[]) {

                   Try {

                            Int a[] = null;

                            average(a);

                   } catch (NullPointerException e ) {

                            System.out.println(“NullPointerException”);

                   }

                   System.out.println(“OK”);

         }

输出结果为:

NullPointerException

NullPointerException

OK

 

2.编写一个方法,比较两个字符串。假如其中一个字符串为空,会产生NullPointerException异常,在方法声明中通告该异常,并在适当时候触发异常,然后编写一个程序捕获该异常。(知识点:自定义异常)

 

3.假如要从命令行获得两个整数,自定义两个异常类来描述可能发生的异常:ParameterNumberException(参数个数异常),ParameterFormateException(参数格式异常),设计一个类,在check(String args[])方法中通告这两个异常,在main方法中判断相应的情况下触发异常,然后捕获异常,对它们进行处理。(知识点:异常处理机制)

 

4.给定下面代码: public void example(){
  try {
  unsafe();
  System.out.println("Test 1");
  }catch(Exception e){
  System.out.println("Test 2");
  }
  finally{
  System.out.println("Test 3");
  }
  System.out.println("Test 4");
}
如果方法unsafe()运行正常,哪个结果不会被显示出来?
  A. Test 1 B. Test 2 C. Test3 D. Test 4
(知识点:异常处理机制)

 

5.编写应用程序,从命令行传入两个整型数作为除数和被除数。要求程序中捕获NumberFormatException 异常和ArithmeticException 异常在命令行输入不同的参数时能输出如下各种结果: 
(知识点:异常处理机制)

6.编写一个检查给定的数字的数据类型是否为byte的程序,如果此数字超出byte数据类型表示的数的范围,则引发用户自定义的异常ByteSizeException,并显示相应的错误信息(知识点:自定义异常)

步骤1:创建用户自定义异常类ByteSizeException

步骤2:在main方法中编写逻辑代码

步骤3:运行并测试

效果如图:

 

 答案:

一、【必做题】

1.写出以下程序的运行结果。

         Static double average(int[] a) throws NullPointerException {

                   Try {

                            Int sum = 0;

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

                                     Sum += a[i];

                            }

                            Return (((double) sum) / a.length);

                   } catch (NullPointerException e) {

                            System.out.println(“NullPointerException”);

                            throw e;

                   }

         }

         Public static void main(String args[]) {

                   Try {

                            Int a[] = null;

                            average(a);

                   } catch (NullPointerException e ) {

                            System.out.println(“NullPointerException”);

                   }

                   System.out.println(“OK”);

         }

NullPointerException

NullPointerException

OK

 

2.编写一个方法,比较两个字符串。假如其中一个字符串为空,会产生NullPointerException异常,在方法声明中通告该异常,并在适当时候触发异常,然后编写一个程序捕获该异常。

publicclass Main {

   

publicstaticvoid test(String s,String a ) throws NullPointerException {

      

   

       if(s==null||a == null) {

           thrownew NullPointerException();

       }else{

          

       }

    }

   

    publicstaticvoid main(String[] args) {

       // TODO Auto-generated method stub

       try{

           String s = null;

           String a = "asff";

           test(s,a);

      

       }catch(NullPointerException e){

           e.printStackTrace();

       }

    }

   

}

 

 

3.假如要从命令行获得两个整数,自定义两个异常类来描述可能发生的异常:ParameterNumberException(参数个数异常),ParameterFormateException(参数格式异常),设计一个类,在check(String args[])方法中通告这两个异常,在main方法中判断相应的情况下触发异常,然后捕获异常,对它们进行处理。

4.给定下面代码: B. Test 2
public void example(){
  try {
  unsafe();
  System.out.println("Test 1");
  }catch(Exception e){
  System.out.println("Test 2");
  }
  finally{
  System.out.println("Test 3");
  }
  System.out.println("Test 4");
}
如果方法unsafe()运行正常,哪个结果不会被显示出来?
  A. Test 1 B. Test 2 C. Test3 D. Test 4

5.编写应用程序,从命令行传入两个整型数作为除数和被除数。要求程序中捕获NumberFormatException 异常和ArithmeticException 异常在命令行输入不同的参数时能输出如下各种结果: 
 
java A 
 
总是被执行 
  Exception in thread "main" java.lang.ArrayIndexOutofBoundsException at 
  A.main(A.java:7) 
 
  java A 1 2 
  0 
 
总是被执行
 
 
  java A 1 3a 
  java.lang.NumberFormatException: 3a 
  at java.lang.Integer.parseInt(Integer.java:435) 
  at java.lang.Integer.parseInt(Integer.java:476) 
  at A.main(A.java:8) 
 
总是被执行
 
 
  java A 1 0 
  java.lang.ArithmeticException: / by zero at A.main(A.java:9) 
 
总是被执行 

6.编写一个检查给定的数字的数据类型是否为byte的程序,如果此数字超出byte数据类型表示的数的范围,则引发用户自定义的异常ByteSizeException,并显示相应的错误信息

步骤1:创建用户自定义异常类ByteSizeException

步骤2:在main方法中编写逻辑代码

步骤3:运行并测试

效果如图:

publicclass ByteSizeException extends Exception{

    public ByteSizeException(){

       super("此数字超出byte数据类型表示的数的范围");

    }

}

publicclass Main {

   

    publicstaticvoid foo(int number) throws ByteSizeException{

       if(number > 127 || number < -128){

       thrownew ByteSizeException();

       }

       }

 

    publicstaticvoid main(String[] args) {

       try{

           foo(555);

       }catch (ByteSizeException e) {

           e.printStackTrace();

       }

    }

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值