首页 > 其他分享 >07 异常

07 异常

时间:2025-01-14 21:54:40浏览次数:1  
标签:07 处理 程序 System num 异常 Scanner

什么是异常

异常就像是生活中遇到的意外情况。在程序运行过程中,可能会出现一些意想不到的问题,比如要打开的文件不存在、网络连接突然中断、除数为零等,这些就是异常。当异常发生时,如果不处理,程序可能会崩溃或出现错误结果,所以需要我们去处理这些异常,让程序能更稳健地运行。

假设我们要写一个程序,从键盘读取一个整数,然后计算 10 除以这个整数的结果。

import java.util.Scanner;

public class ExceptionExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个整数:");
        int num = scanner.nextInt();
        int result = 10 / num;
        System.out.println("10 除以 " + num + " 的结果是:" + result);
    }
}

如果用户输入 0,就会出现除数为零的异常(ArithmeticException),程序会中断并报错。

为了处理这个异常,我们可以这样修改代码:

import java.util.Scanner;

public class ExceptionExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("请输入一个整数:");
            int num = scanner.nextInt();
            int result = 10 / num;
            System.out.println("10 除以 " + num + " 的结果是:" + result);
        } catch (ArithmeticException e) {
            System.out.println("输入的数不能为 0 哦,出现了异常:" + e.getMessage());
        }
    }
}

这里使用了try-catch结构来处理异常。try块里放可能会出现异常的代码,catch块用来捕获并处理特定类型的异常(这里是ArithmeticException)。当用户输入 0 时,程序不会崩溃,而是会输出我们在catch块里设置的提示信息:“输入的数不能为 0 哦,出现了异常:/by zero”。

除了这种基本的异常处理,还有finally块(无论是否发生异常,都会执行)、多个catch块处理不同类型的异常、自定义异常等更复杂的用法,目的都是为了让程序在遇到意外情况时能更友好地处理,而不是直接崩溃。

三种类型的异常:

  • 检查性异常:这些异常是程序在编译时编译器会检查的异常。它们通常表示程序在正常运行时可能会遇到的外部错误,但程序本身无法控制,不过可以提前做好处理。这类异常通常是因为外部资源不可用用户输入错误等引起的。如果不处理这些异常,程序将无法编译通过。
  • 运行时异常:运行时异常是在程序运行过程中可能发生的异常,但不需要在编译时进行强制处理。它们通常是由程序逻辑错误导致的,比如数组越界空指针引用除数为零等。这些异常通常是因为代码编写不当,应该在编写代码时尽量避免。
  • 错误:错误表示程序在运行时发生的严重问题,通常是超出了程序的控制范围,比如虚拟机错误内存不足栈溢出等。一般情况下,程序不应该去捕获或处理这些错误,因为它们通常是无法恢复的。

异常体系结构

Java 把异常当作对象来处理,并定义一个基类 java.lang.Throwable 作为所有异常的超类。

Java API 中已经定义了许多异常类型,这些异常类分为两大类,错误 Error 和异常 Exception


Java异常处理机制


处理异常


自定义异常


总结


标签:07,处理,程序,System,num,异常,Scanner
From: https://www.cnblogs.com/you-ni/p/18671804

相关文章

  • [ARC070E] NarrowRectangles
    前言模拟赛\(\rm{T4}\),不会比较正常,仅仅只是记录做法然后就是还有每日一练思路首先是朴素的\(\rm{dp}\)令\(f_{i,j}\)表示考虑到第\(i\)行,其中这一行的左端点位置为\(j\)的最优花费容易写出转移\[f_{i,j}\gets\min_{k\in[j-len_{i-1},j+len_i]......
  • Python 文件和异常捕获(详解)
            前言:在Python编码中,我们会学到python中的文件的读取与写入,当然还有对文件夹的操作,在文章的最后还有异常捕获的详细解释~~一.文件的概念:        有名称:每个文件都有一个文件名,用于在特定的文件系统中唯一标识该文件,方便用户和系统对文件进行识别、访......
  • 07jdk7u21原生利用链
    JDK7u21反序列化的关键在于找到可以动态方法执行的代码:例如CC链中的Transformer,CB链中的PropertyUtils#getPropertyJDK7u21中动态方法执行的点,AnnotationInvocationHandler#equalsImpl中的hisValue=memberMethod.invoke(o)。privateBooleanequalsImpl(Objecto){......
  • 【Vim Masterclass 笔记12】第 7 章:Vim 核心操作之——文本对象与宏操作 + S07L28:Vim
    文章目录Section7:TextObjectsandMacrosS07L28TextObjects1文本对象的含义2操作文本对象的基本语法3操作光标所在的整个单词4删除光标所在的整个句子5操作光标所在的整个段落6删除光标所在的中括号内的文本7删除光标所在的小括号内的文本8操作尖括号内的文......
  • Chrome浏览器Selenium编程常见异常与解决方案
    Selenium程序正常运行的前提是,代码能够找到浏览器,并且能够找到对应版本的驱动文件。第一种异常表现:代码找不到ChromeDriver.exe提示ChromeDriver.exedoesnotexists 第二种异常表现:浏览器与驱动文件版本不兼容提示sessionnotcreated 解决方法1:首先下载与浏览器版......
  • #1407. 字符串的插入
    题目描述输入一个句子(一行),将句子中的每一个单词翻转后输出。输入格式只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。输出格式翻转每一个单词后的字符串,单词之间的空格需与原文一致。输入数据1helloworld输出数据1ollehdlrow代码:#include<iostr......
  • 《ARM Cortex - M3与Cortex - M4权威指南》第8章深入了解异常处理详解
    8.1简介8.1.1关于本章本章主要聚焦于ARMCortex-M3与Cortex-M4处理器中异常处理的深入知识。旨在让读者全面理解异常处理机制,包括异常处理的实现方式、栈帧的管理以及异常流程中的各种细节,这些知识对于开发高效、可靠的基于这两款处理器的嵌入式系统至关重要。8.1.......
  • 07、Docker学习,容器间通信
    Docker学习,容器间通信今天在Docker中安装Nacos连接MySQL的时候出现了问题,发现容器间需要通信。现在记录下来:1、创建自定义网络(用于容器间通讯)dockernetworkcreatecommon-network2、查看网络dockernetworkls3、重新安装mysqldockerrun-p13306:3306--......
  • 【JAVA 基础 第(16)课】自定义异常类,会更帅哦
    自定义异常类   编译期异常类: class异常类名 extendsException{}   运行期异常: class异常类名extendsRuntimeException{}   类中添加两个构造方法:一个默认消息的构造方法,一个是指定消息的构造方法代码示例:自定义一个游戏输赢异常类publicclassNot_......
  • 学英语学压测:07 jmeter 三种运行模式:GUI、命令行、Server
    ......