第五次实训作业异常处理

  1. 编写一个类ExceptionTest,在main方法中使用try-catch-finally语句结构实现:

² 在try语句块中,编写两个数相除操作,相除的两个操作数要求程序运行时用户输入;

² 在catch语句块中,捕获被0除所产生的异常,并输出异常信息;

在finally语句块中,输出一条语句。

package shixun;

import java.util.Scanner;

public class ExceptionTest {

public static void main(String[] args) {
    // TODO 自动生成的方法存根
    Scanner input = new Scanner(System.in);
    System.out.println("请输入除数:");
    int op1 = input.nextInt();
    System.out.println("请输入被除数:");
    int op2 = input.nextInt();
    int result = 0;
    try {
        result = op1 / op2;
    } catch (ArithmeticException e) {
        e.printStackTrace();
    } finally {
        System.out.println("异常处理");
    }
    System.out.println(result);

}

}

  1. 编写一个应用程序,要求从键盘输入一个double型的圆的半径,计算并输出其面积。测试当输入的数据不是double型数据(如字符串“abc”)会产生什么结果,怎样处理。

package yic;

import java.util.Scanner;

public class shiyan1 {

@SuppressWarnings("resource")
public static void main(String[] args) {
    // TODO Auto-generated method stub
    double r;
    Scanner s = new Scanner(System.in);
    while(true){
        try{
        r = Double.parseDouble(s.next());
        if(r<0)
            throw new NegativeException();
        else if(r<1.0||r>100.0)
            throw new NumberRangeException();
        else{
            System.out.println("面积是"+3.14*r*r);
            break;
        }
        }catch(NumberFormatException e){
            System.out.println("非数值异常");
        }catch(NegativeException e){
            System.out.println("负数异常");
        }catch(NumberRangeException e){
            System.out.println("越界异常");
        }
    }
}

}
class NegativeException extends Exception{
/**
*
*/
private static final long serialVersionUID = 1L;
public NegativeException(){
super();
}
public NegativeException(String msg){
super(msg);
}
public NegativeException(String msg, Throwable cause){
super(msg,cause);
}
public NegativeException(Throwable cause){
super(cause);
}
}
class NumberRangeException extends Exception{
public NumberRangeException(){
super();
}
public NumberRangeException(String msg){
super(msg);
}
public NumberRangeException(String msg, Throwable cause){
super(msg,cause);
}
public NumberRangeException(Throwable cause){
super(cause);
}
}

3.为类的属性“身份证号码.id”设置值,当给的的值长度为18时,赋值给id,当值长度不是18时,抛出IllegalArgumentException异常,然后捕获和处理异常,编写程序实现以上功能。

package yic;

public class shiyan2 {
private String id;
public void setid(String id) {
if(id.length()==18)
this.id=id;
else
throw new IllegalArgumentException("参数长度应为18!");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
shiyan2 t =new shiyan2();
try {
t.setid("0123456789123456789");
}catch(IllegalArgumentException ie) {
System.out.println(ie.getMessage());
}finally {
System.out.println("结束");
}

}

}

posted @ 2019-06-10 20:58  宫小明  阅读(139)  评论(0编辑  收藏  举报