第1关:学习-Java异常处理之try-catch之异常捕获

  • 任务描述
  • 相关知识
    • 什么是异常
    • 非运行时异常
    • 运行时异常
    • 错误
    • 捕获异常
    • 异常的使用原则
  • 编程要求
  • 测试说明

任务描述

本关任务:求给定两个数的商,并捕获除数为 0 的异常。

相关知识

为了完成本关任务,你需要掌握: 1.什么是异常; 2.如何捕获异常; 3.异常的使用原则。

什么是异常

异常:程序在运行过程中产生的不正常情况。

程序在运行的时候,发生了一些预期之外的事件,从而没有按照我们编写的代码执行,这就是异常。

异常是 Java 中的错误,但是并不是所有的错误都是异常,比如说,你在定义变量名的时候没有依照 Java 的规则,在语句的结尾少了一个分号,那么运行出来结果是错误: java.lang.Error

异常的原因有很多种,比如:

  1. 输入了错误的数据,比如:程序需要的是 int 类型数据,而用户输入了一串字符串;

  2. 对象没有初始化就调用,下面这段代码就会提示空指针异常。

  1. String str = null;
  2. int length = str.length();

要理解 Java 中的异常是如何工作的,你需要掌握以下三种类型的异常:

  1. 非运行时异常;

  2. 运行时异常;

  3. 错误。

非运行时异常

非运行时异常也称检查型异常,如下图 1 所示,当我们要打开一个文件时,这段代码就可能存在异常,因为这个文件很有可能并不存在,所以在 IDE(编程软件) 中就会有红波浪线报错。这种异常程序员是必须要处理的。

图1

运行时异常

运行时才有可能会出现的异常,该类型异常程序员可以不去处理,当异常出现时,虚拟机会处理。常见的运行时异常有空指针异常。

错误

错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。

捕获异常

如图 1 所示,非运行时异常是需要我们提前处理的,那么如何处理呢?

Java 中提供了一个捕获异常的机制:try-catch,如下所示:

  1. try{
  2. 代码 A
  3. 代码 B
  4. }
  5. catch(Exception e){
  6. 异常处理代码
  7. }
  8. 代码 C

通过这两个单词的字面意思我们就能很好的理解了: try:尝试;catch:捕获。 尝试执行代码 A 和代码 B,如果这两段代码有一个出现了异常,就会执行 catch 中的语句,如果代码A、B 都不存在异常就不会执行 catch 代码,最后继续执行代码 C。其中 catch 后面括号中写的是异常的类型,Exception 可以代表所有异常,但是随着后面学习的深入,这里的异常类型最好写具体,比如 FileNotFoundException(文件未找到异常)。

所以之前报错的代码我们这样写就没错啦:

  1. public static void main(String[] args) {
  2. try {
  3. File file = new File("D://abc.c");
  4. FileInputStream fileInputStream = new FileInputStream(file);
  5. }
  6. catch (Exception e){
  7. System.out.println("文件D://abc.c不存在");
  8. }
  9. System.out.println("代码c部分");
  10. }

在以上代码中,我们使用 try-catch 语句捕获了异常,所以程序就不会报错了。

异常的使用原则

异常使用的原则主要有三个:

具体明确:指抛出的异常应能通过异常类名和 message 准确说明异常的类型和产生异常的原因; 提早抛出:指应尽可能早的发现并抛出异常,便于精确定位问题; 延迟捕获:指异常的捕获和处理应尽可能延迟,让掌握更多信息的作用域来处理异常。

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,在 Begin-End 间编写程序代码,求给定两个数的商,并捕获除数为 0 的异常,具体要求如下:

  • 接收给定的数据(如:42 2。其中第一个数为被除数,第二个为除数);
  • 求两个数的商,并捕获除数为 0 的异常,捕获到该异常后输出提示语句:“除数不能为0” 。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。可在右侧 “测试结果”区查看具体的测试集详情。

测试输入:

  1. 5 2

预期输出:

  1. 2

测试输入:

  1. 4 0

预期输出:

  1. 除数不能为0

开始你的任务吧,祝你成功!

import java.util.Scanner;public class ExcTest {public static void main(String[] args) {// 请在Begin-End间编写代码/********** Begin **********/// 第一步:接收给定的整数Scanner x=new Scanner(System.in);int a=x.nextInt();int b=x.nextInt();// 第二步:求给定两个数的商,并捕获除数为0的异常try{int q=a/b;System.out.print(q);/********** End **********/}catch(Exception e){System.out.print("除数不能为0");}
}}

学习-Java异常处理之try-catch之异常捕获相关推荐

  1. Try Catch C++ 异常捕获

    Try Catch C++ 异常捕获 参考文章: (1)Try Catch C++ 异常捕获 (2)https://www.cnblogs.com/0523jy/p/11367831.html 备忘一 ...

  2. java报错空指针异常_springboot全局异常捕获,真香

    全局异常捕获 什么是异常?程序在启动或者运行时没有按照预期的执行,在执行途中发生某种未知的错误,导致程序非正常停止或者报错. 在我们的程序中,肯定会伴随着很多的异常,启动时:空对象.找不到数据库.用户 ...

  3. 我的python学习(五)文件操作、异常捕获

    读写.创建文件 文件的分类: 文本文件:基于字符编码,存储的是普通字符串,不包括字体.字号.样式.颜色等信息,可通过文本编辑器显示和编辑,例如txt文件: 二进制文件:基于值编码的,以字节形式存储,其 ...

  4. JAVA学习心得——异常处理try、catch、finally用法

    要了解try.catch.finally的用法,首先了解什么是异常. 异常就是代码出现了问题,不同寻常的意思. java语言把程序运行过程中所发生的不正常严重错误成为异常. 异常的结构: 异常也是有子 ...

  5. JAVA异常处理正常的逻辑_JAVA异常的思考与总结

    在Java中,执行逻辑被意外的中断,程序跳出了正常运行的轨道,这就是异常. 异常机制的优点 异常是Java的一种语言特征,被用来处理程序运行失败的情况,是强制停止程序继续错误运行的一种手段.当异常发生 ...

  6. 学习-Java异常处理之throw之酒店入住

    任务描述 本关任务:接收给定的一个整数(年龄),当年龄小于 18 岁或者大于 90 岁时,抛出一个异常(Exception),提示"18岁以下,90岁以上的住客必须由亲友陪同":当 ...

  7. 学习java的第15天之 异常

    异常产生的原因 因为硬件缺失,程序不够严谨,必须的内容缺失导致的程序问题称为异常 类似与人生病 异常的分类 Throwable Error: 证明硬件出现问题,不处理 常见的错误: OutOfMemo ...

  8. java 捕获异常顺序_Java基础:异常捕获顺序

    public voidtestException(){ int a[] = {1,2,3};int q = 0; try{ for(int i=0;i }catch(ArithmeticExcepti ...

  9. java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析

    JAVA 异常 当代码运行出现错误导致程序终止运行或出现错误情况的状况,就是异常.异常不是指语法错误,即不属于编译错误,只有运行的程序才会有异常. 这个时候,JAVA 就提供了优秀的处理方法:异常处理 ...

最新文章

  1. mysql主从结构主数据库_mysql主从结构主数据库
  2. ssh免密登录方法不生效?Authentication refused: bad ownership or modes for directory
  3. os.popen read()报编码错误_偶遇OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054
  4. C++---肿瘤面积
  5. 《程序员开发心理学》阅读笔记一
  6. 全局路径规划:图搜索算法介绍6(A star)Matlab算法实现
  7. 【项目实训】基于人脸识别的课堂签到管理系统(python+qt5+sqlite3+百度智能云)
  8. Log4net 配置实例
  9. 第14章5节: HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态 2
  10. nginx模块开发 c语言,Nginx模块开发 – C++模块
  11. 【Hibernate教程】集合映射
  12. VS2015的下载地址和安装教程
  13. 常见的位运算技巧总结(膜wys)
  14. 安装CentOS操作系统(超详细)
  15. DTU和工业网关的区别是什么?怎么选?
  16. python中set集合的使用
  17. gensim官方文档实践笔记
  18. PBS环境------qsub, qstat, qdel
  19. OPPO手机怎么找到快应用入口
  20. web 移动端开发基础

热门文章

  1. Python:中文数字转换为阿拉伯数字
  2. redis核心原理与设计思想
  3. 使用java程序采集地区历史天气
  4. vmware启动虚拟机黑屏
  5. python消息队列_python之消息队列
  6. 5、产品经理的工作职责OR主要工作技能和工具
  7. 【Blender】基础物体建模(5)
  8. 行星轨迹制作_行星运动轨迹的程序实现
  9. nginx报错:nginx: [error] OpenEvent(“Global\ngx_reload_89728“) failed
  10. 【技术贴】虚拟机网络上有重名的解决|虚拟机Net模式提示有重名