前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java -- 第8章 异常处理

java -- 第8章 异常处理

作者头像
北山啦
发布2022-11-27 11:40:09
3910
发布2022-11-27 11:40:09
举报
文章被收录于专栏:北山啦的博客

实验目的:

      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不是必要的,如下图所示

Summary:

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实验目的:
  • 实验内容:
  • 实验步骤:
  • Summary:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档