java -- 第8章 异常处理

举报
北山啦 发表于 2021/04/21 00:40:18 2021/04/21
【摘要】 实验目的:       1.熟悉异常处理机制。       2.掌握常见异常的捕获方法。 实验内容:         1.编程实现除数为0的异常处理。         2.编程实现输入错误的异常处理。         3.编程实现非法参数的异常处理。 实验步骤: 1.编写一个类ExceptionTest,在main方法中使用try-catch-finally语...

实验目的:

      1.熟悉异常处理机制。

      2.掌握常见异常的捕获方法。

实验内容:

        1.编程实现除数为0的异常处理。

        2.编程实现输入错误的异常处理。

        3.编程实现非法参数的异常处理。

实验步骤:

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

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

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

3)在finally语句块中,随意输出一条语句,比如:

System.out.println("执行finally语句块。");

提示:捕捉ArithmeticException异常。

源代码:

 

import java.util.Scanner;

 

public class ExceptionTest {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in);

        System.out.println("请输入被除数:\n");

        int op1 = input.nextInt();     

        System.out.println("请输入除数:\n");

        int op2 = input.nextInt();      

        int result = 0;

        try {

            result = op1 / op2;

        } catch (ArithmeticException e) {

            e.printStackTrace();

        } finally {

            System.out.println("运行完成");

        }

        System.out.println(result);

    }

}

运行结果截图:

 

 

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

提示:捕捉InputMismatchException异常。

源代码:

import java.util.InputMismatchException;

import java.util.Scanner;

 

public class Circle {

    public static void main(String[] args){

        Scanner input = new Scanner(System.in);

        System.out.println("请输入圆的半径:");

        double r = input.nextDouble();

        double s = 0;

        try {

            s = r*r*3.14;

        } catch (InputMismatchException e) {

            e.printStackTrace();

        } finally {

            System.out.println("运行完成");

        }

        System.out.println("圆的面积为:"+s);

    }

   

}

 

运行结果截图:

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

提示:IllegalArgumentException异常是用户自定义的异常,不能依靠系统自动抛出,必须通过throws语句实现。可参考以下代码:

源代码:

import java.util.InputMismatchException;
import java.util.Scanner;


class person {
   
private String id;
   
public String getId(){
       
return id;
    }
   
public void setId(String id) throws IllegalArgumentException
   
{
       
if(id.length() != 18)
        {
           
throw(new IllegalArgumentException());
        }
       
this.id = id;
    }
}



public class Sy8_3{
   
public static void main(String[] args){
       
person p1 = new person();
       
Scanner input = new Scanner(System.in);
       
System.out.println("请输入身份证号码:");
       
try {
           
p1.setId(input.next());
           
System.out.println("你输入的身份证是:"+p1.getId());
        }
catch (IllegalArgumentException e) {
           
System.out.println("输入有误");
        }
    }
}

 

运行结果截图:

   

实验小结

  1. 异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。
  2. 我们可以通过try和cath关键字来捕获异常,其中catch可以多次使用,进行多重捕获异常,如下图所示:

  1. 第三步可以使用throws关键字来抛出异常,在方法名称的尾部加上throws关键字和抛出的异常,如下图所示:

  1. 我们可以通过throws关键字来抛出多个异常,在抛出的异常名称后面用逗号分隔开,下面代码就抛出了RemoteException异常和InsufficientFundsException异常,如下图所示:

  1. 异常处理中还有一个finally关键字,无论有没有异常,finally中的代码总是被执行,需要注意的是finally不是必要的,如下图所示

  1.  

Summary

养成良好的编程习惯,不要把错误给吞噬掉(即捕获到异常以后又不做出相应处理的做法,这种做法相当于是把错误隐藏起来了,可实际上错误依然还是存在的), 也不要轻易地往外抛错误,能处理的一定要处理,不能处理的一定要往外抛。往外抛的方法有两种,一种是在知道异常的类型以后,方法声明时使用throws把 异常往外抛,另一种是手动往外抛,使用“throw+异常对象”你相当于是把这个异常对象抛出去了,然后在方法的声明写上要抛的那种异常。

文章来源: blog.csdn.net,作者:北山啦,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_45176548/article/details/112342204

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。