java异常:异常处理--try-catch结构详解

目录
  • 总结

从键盘接收两个整数,输出两数的商:

package java_exception;
import java.util.Scanner;
public class TryDemoOne {
    public static void main(String[] args) {
        //定义两个整数,键盘输入两个整数,输出两数之商
        Scanner input = new Scanner(System.in);
        System.out.println("=====运算开始=====");
        System.out.print("请输入第一个整数:");
        int one = input.nextInt();
        System.out.print("请输入第二个整数:");
        int two = input.nextInt();
        System.out.println("one和two的商为:"+ (one/two));
        System.out.println("=====运算结束=====");
    }
}

若此时将0或字母作为除数,程序必然会报错。

为了处理这种错误的发生,可以引入try-catch来避免程序报错而终止运行。

在可能出现异常的位置引入try-catch结构,当程序某一句发生错误,就会输出catch中自己设置的报错内容(程序出现错误!),其中 e.printStackTrace();语句会打印出错的详情信息,在终端打印的位置随机,若没有该语句,就只会输出自己设置的报错内容,程序正常运行。:

try{
    System.out.print("请输入第一个整数:");
    int one = input.nextInt();
    System.out.print("请输入第二个整数:");
    int two = input.nextInt();
    System.out.println("one和two的商为:"+ (one/two));
}catch(Exception e){
    System.out.println("程序出现错误!");
    e.printStackTrace();   //打印出错的详情信息,在终端打印的位置随机
}

输出:

1.输入两个整数

=====运算开始=====
请输入第一个整数:15
请输入第二个整数:5
one和two的商为:3
=====运算结束=====

2.将字母a作为除数输入

=====运算开始=====
请输入第一个整数:15
请输入第二个整数:s
程序出现错误!
java.util.InputMismatchException
        at java.base/java.util.Scanner.throwFor(Scanner.java:939)
        at java.base/java.util.Scanner.next(Scanner.java:1594)
        at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
        at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
        at java_exception.TryDemoOne.main(TryDemoOne.java:21)
=====运算结束=====

3.将0作为除数输入

=====运算开始=====
请输入第一个整数:15
请输入第二个整数:0
程序出现错误!
java.lang.ArithmeticException: / by zero
        at java_exception.TryDemoOne.main(TryDemoOne.java:22)
=====运算结束=====

如果要保证在catch包含的语句之后的结果正常输出,可以加上finally:

try{
    System.out.print("请输入第一个整数:");
    int one = input.nextInt();
    System.out.print("请输入第二个整数:");
    int two = input.nextInt();
    System.out.println("one和two的商为:"+ (one/two));
}catch(Exception e){
    System.out.println("程序出现错误!");
    e.printStackTrace();   //打印出错的详情信息,在终端打印的位置随机
}finally{
    System.out.println("=====运算结束=====");
}

以上就是try-catch-finally的完整组合了,try负责抛出异常,catch负责捕获异常,finally负责无论怎样都会执行。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java中异常处理之try和catch代码块的使用

    Java try和catch的使用 尽管由Java运行时系统提供的默认异常处理程序对于调试是很有用的,但通常你希望自己处理异常.这样做有两个好处.第一,它允许你修正错误.第二,它防止程序自动终止.大多数用户对于在程序终止运行和在无论何时错误发生都会打印堆栈轨迹感到很烦恼(至少可以这么说).幸运的是,这很容易避免. 为防止和处理一个运行时错误,只需要把你所要监控的代码放进一个try块就可以了.紧跟着try块的,包括一个说明你希望捕获的错误类型的catch子句.完成这个任务很简单,下面的程序包含一个

  • Java异常处理之try...catch...语句的使用进阶

    try就像一个网,把try{}里面的代码所抛出的异常都网住,然后把异常交给catch{}里面的代码去处理.最后执行finally之中的代码.无论try中代码有没有异常,也无论catch是否将异常捕获到,finally中的代码都一定会被执行. 虽然 Java 执行时期系统所提供的预设处理器对除错很有用,你通常想要自己处理例外.这样做有两个优点:第一,它让你修正错误.第二,它可以避免程式自动终止.每当错误发生时,如果你的程式就停止而且列印出堆叠追踪,大多数的使用者都会感到很困惑.很幸运,你很容易就能

  • Java中try catch 的基本用法示例

    前言 我们编译运行程序出错的时候,编译器就会抛出异常.抛出异常要比终止程序灵活许多,这是因为 的Java提供了一个"捕获"异常的的处理器(处理器)对异常情况进行处理. 如果没有提供处理器机制,程序就会终止,并在控制台上打印一条信息,给出异常的类型.L 比如:使用了NULL引用或者是数组越界等. 异常有两种类型:未检查异常和已检查异常对于已检查异常,处理器器将会检查是否提供了处理器. 然而有许多の异常,如:访问null引用,都属于未检查异常.编译器不会查看是否为这些错误提供了处理器.毕竟

  • Java try-catch-finally异常处理机制详解

    Java中的try-catch-finally异常处理 一.异常处理 异常(Exception):是在运行发生的不正常情况. 原始异常处理: if(条件) { 处理办法1 处理办法2 处理办法3 } if(条件) { 处理办法4 处理办法5 处理办法6 } 代码阅读性差,臃肿不堪,与正常流程代码结合的很紧密,所以,在JAVA中进行一系列的改良,将一系列常见的问题,用面向对象的思考方式,对其进行了描述.封装. class 处理办法 { 处理办法1() { 举例1 } 处理办法2() { 举例2 }

  • Java.try catch finally 的执行顺序说明

    示例1: public static String hello() { String s = "商务"; try { return s; } catch (Exception e) { return "catch进来了"; } finally { s = "你好世界"; return s; } } 返回结果:你好世界,此时的返回顺序是 finally > try 示例2: public static String hello() { Str

  • Java中try、catch的使用方法

    Java中有两种处理异常的方式,分别是用throws抛出异常.用try.catch捕获异常. try-catch 在Java try-catch语句的语法格式: try{ //代码块 }catch(Exception1 e){ //抛出异常后所要进行的操作 } 当try语句当中捕获到异常时,会将异常抛出到catch语句中匹配异常类型,当异常和catch后面的异常类型相匹配时,则catch语句将会执行. 举个最基础的例子,除数不能为0 try中的异常与catch后面的异常类型匹配的情况: try{

  • java 异常捕获及处理案例详解

    目录 一.Java异常简介 二.Java异常的分类 三.异常的使用及执行流程 四.自定义异常 一.Java异常简介 什么是异常? 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止.在Java中即,Java在编译或运行或者运行过程中出现的错误. Java提供了更加优秀的解决办法:异常处理机制. 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持

  • Java基础之switch分支结构详解

    一.基本语法 二.流程图 1.画出 swtich 出流程 2.案例说明流程图 三.快速入门 案例:Switch01.java 请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g a 表示星期一,b 表示星期二 - 根据用户的输入显示相应的信息.要求使用 switch 语句完成 代码: /* 案例:Switch01.java 请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g a表示星期一,b表示星期二 - 根据用户的输入显示相应的信息.要求使用 swi

  • Java异常分类及统一处理详解

    一.异常分类 java异常分为"检查"和"非检查"两类,"检查"二字的意思是,代码编译时,编译器会去Check一下有没有进行异常处理(捕获或向上抛),对于归类为需要检查的异常,若没处理,编译就过不去.        初学的时候,常常想为啥异常要这样分类处理? 后来明白了些,异常不过两种:主观和客观,一个大多数情况下可以避免,一个大多数情况下无法避免.        像NullPointerException这类异常,大多跟程序员素质挂钩(开发好,

  • Java异常类型以及处理实例详解

    目录 一.异常的描述 二.异常的体系 三.异常的分类: 四.异常处理的捕捉形式 五.异常处理的原则 六.finally 七.异常的应用 八.异常的注意事项: 总结 一.异常的描述 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止.在Java中即,Java在编译或运行或者运行过程中出现的错误. Java提供了更加优秀的解决办法:异常处理机制. 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处

  • Java 知识难点之异常的认知与使用详解

    目录 前言 一. 异常的背景 初识异常 数组下标越界 访问 null 对象 异常分为2种: 异常体系: 防御式编程: 异常的好处 LBYL 风格的代码(不使用异常) EAFP 风格的代码(使用异常) 二.异常的基本用法 基本语法 异常处理流程 关于异常的处理方式 抛出异常 三. 自定义异常类 前言 本篇文章你会学习到什么是异常,异常的基本语法使用,和自定义异常,干货多多!!! 一. 异常的背景 初识异常 我们曾经的代码中已经接触了一些 "异常" 了. 例如 除以 0 public st

  • java类的组成结构详解

    目录 成员变量 方法 构造器 代码块 成员变量 成员变量便是在类中定义的变量. 例如这样: public class POP { int a = 1; } 而成员变量又分为两种,一种是被static所修饰的类变量,他归类所有,一种是没有被static修饰的实例变量,他归对象所有. 如下: public class POP { int a = 1; static int b = 1; } 正如字面上的意思,归类所有的变量b,他能在类的外部,直接通过POP.b的形式进行操作. 如下程序: publi

  • Java项目的目录结构详解

    一个java web项目 目录分为两个部分 ① Web应用的根目录下子目录WEB-INF,里面内容不能被客户端访问的,包括专用Web应用程序软件,包括Servlet类文件.部署描述符web.xml.外部库以及其他任何由此应用程序使用的专用文件. ② 所有位于WEB-INF之外的文件都被看作是公共的,客户端是可以访问到的.资源包括HTML页面.JSP页面和图像等. 一.Common包 Common用来封装一些常用的公共方法. 二.Dao包 Dao主要用来封装对数据库的新增,删除,查询,修改.叫做数

  • Java多线程中ReentrantLock与Condition详解

    一.ReentrantLock类 1.1什么是reentrantlock java.util.concurrent.lock中的Lock框架是锁定的一个抽象,它允许把锁定的实现作为Java类,而不是作为语言的特性来实现.这就为Lock的多种实现留下了空间,各种实现可能有不同的调度算法.性能特性或者锁定语义.ReentrantLock类实现了Lock,它拥有与synchronized相同的并发性和内存语义,但是添加了类似锁投票.定时锁等候和可中断锁等候的一些特性.此外,它还提供了在激烈争用情况下更

  • java集合框架线程同步代码详解

    List接口的大小可变数组的实现.实现了所有可选列表操作,并允许包括null在内的所有元素.除了实现List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小.(此类大致上等同于Vector类,除了此类是不同步的.)size.isEmpty.get.set.iterator和listIterator操作都以固定时间运行.add操作以分摊的固定时间运行,也就是说,添加n个元素需要O(n)时间.其他所有操作都以线性时间运行(大体上讲).与用于LinkedList实现的常数因子相比,此实现的

  • Java编程Retry重试机制实例详解

    本文研究的主要是Java编程Retry重试机制实例详解,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下 1.业务场景 应用中需要实现一个功能: 需要将数据上传到远程存储服务,同时在返回处理成功情况下做其他操作.这个功能不复杂,分为两个步骤:第一步调用远程的Rest服务逻辑包装给处理方法返回处理结果:第二步拿到第一步结果或者捕捉异常,如果出现错误或异常实现重试上传逻辑,否则继续逻辑操作. 2.常规解决方案演化 1)try-catch-redo简单重试模式: 包装正

随机推荐