突如其来的"中断异常",我(Java)该如何处理?
# **一、何为异常?**
生活中存在许多不正常:
上班路上自行车掉链子
上厕所手机掉马桶
下班回家钥匙丢失
。。。。。。。
2.程序中的实例
我们的代码中也许存在许多纰漏,导致用户使用时程序突然停止工作,例如下面简单的Java代码完成一个加法器:
import java.util.Scanner;
public class Count {
public static void main (String []args){
int a , b;
Scanner read = new Scanner(System.in);
System.out.print("请输入a:");
a = read.nextInt();
System.out.print("请输入b:");
b = read.nextInt();
System.out.println("a+b="+(a+b));
}
}
看看输入数据会不会出现异常:
- 当输入100和200时,运行正常:


3.异常的概念
异常:异常指的是在程序运行过程中发生的异常事件,通常是由硬件问题或者程序设计问题所导致的。在Java等面向对象的编程语言中异常属于对象(Java语言中异常分为运行时异常(Exception)和编译型异常(Error))。
二、Java中异常处理机制
Java异常处理机制就是程序代码执行过程中出现异常后,会按照我们预先制定的处理方法对异常进行处理,异常处理完成后程序会继续运行下去。
2.关键字try、throw、throws、catch、finally
try: 尝试执行被此关键字作用的代码块A,若出现异常则忽略代码块A中剩下的代码。
throws: 声明方法中将抛出的异常,通常在方法名后出现。
throw: 手动抛出异常。
catch: 捕获处理异常。
finally:不论出现不出现异常都要此块代码都要执行。
3.try-catch块
try语句块中代码执行时发生三种情况:
- try语句块中代码正常执行完毕,没有任何异常,那么catch语句块的代码将不会被执行。
import java.util.*;
public class Count {
public static void main (String []args){
int a , b;
Scanner read = new Scanner(System.in);
try{
System.out.print("请输入a:");
a = read.nextInt();
System.out.print("请输入b:");
b = read.nextInt();
System.out.println("a+b="+(a+b));
}catch(InputMismatchException ex){
System.out.println("不可以,请输数字!");
}
System.out.println("<<<<欢迎使用!>>>>");
}
}
输入100和200后程序顺利进行!
- try语句块中代码执行过程中产生异常,并且该异常跟catch中声明的异常类型相符合,那么try语句块中剩余的代码将被忽略,catch语句块的代码将被执行。
还是上面代码,输入100和a后程序运行如下:

4.try-catch-finally块
在catch子句后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行。
- 代码示例:
import java.util.*;
public class Count {
public static void main (String []args){
int a , b;
Scanner read = new Scanner(System.in);
try{
System.out.print("请输入a:");
a = read.nextInt();
System.out.print("请输入b:");
b = read.nextInt();
System.out.println("a+b="+(a+b));
}catch(Exception ex){
System.out.println("不可以,请输数字!");
}finally{
System.out.println("<<<<欢迎使用!>>>>");
}
}
}
- 运行结果:

5.多重catch块
- 一段代码可能会产生多个异常。
- 依次对每个catch块声明的异常对象进行检查,找到执行第一个与try抛出的异常类型匹配的catch块,之后的catch块将被忽略。
- 异常子类一定要位于异常父类之前,如下图:
突如其来的&quot;中断异常&quot;,我(Java)该如何处理?的更多相关文章
- 突如其来的"中断异常",我(Java)该如何处理?
一.何为异常? 1.生活中的实例 生活中存在许多不正常: 上班路上自行车掉链子 上厕所手机掉马桶 下班回家钥匙丢失 ....... 2.程序中的实例 我们的代码中也许存在许多纰漏,导致用户使用时程序突 ...
- 突如其来的“中断异常”,我(Java)该如何处理?
3.try-catch块 try语句块中代码执行时发生三种情况: try语句块中代码正常执行完毕,没有任何异常,那么catch语句块的代码将不会被执行. import java.util.*; pub ...
- Java 中断异常的正确处理方式
处理InterruptedException 这个故事可能很熟悉:你正在写一个测试程序,你需要暂停某个线程一段时间,所以你调用 Thread.sleep().然后编译器或 IDE 就会抱怨说 Inte ...
- Java中断异常 InterruptedException 的正确处理方式
你看到这篇文件可能是因为你已经调用了一个抛出 InterruptedException 异常的方法,并且需要以某种方式处理它. 首先,需要了解为一个方法为啥会 throws InterruptedEx ...
- sleep方法要求处理中断异常:InterruptedException
package seday08.thread;/*** @author xingsir * 当一个线程调用sleep方法处于阻塞状态的过程中,这个线程的中断方法interrupt被调用时,则sleep ...
- X86中断/异常与APIC
异常(exception)是由软件或硬件产生的,分为同步异常和异步异常.同步异常即CPU执行指令期间同步产生的异常,比如常见的除零错误.访问不在RAM中的内存 .MMU 发现当前虚拟地址没有对应的物理 ...
- 【原创】X86下ipipe接管中断/异常
目录 X86 ipipe接管中断/异常 一.回顾 二.X86 linux异常中断处理 1. 中断门及IDT 2. 初始化门描述符 2.1 早期异常处理 2.2 start_kernel中的异常向量初始 ...
- Java虚拟机内存溢出异常--《深入理解Java虚拟机》学习笔记及个人理解(三)
Java虚拟机内存溢出异常--<深入理解Java虚拟机>学习笔记及个人理解(三) 书上P39 1. 堆内存溢出 不断地创建对象, 而且保证创建的这些对象不会被回收即可(让GC Root可达 ...
- 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)
在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...
- Java异常(一)Java异常简介及其框架
Java异常(一)Java异常简介及其框架 概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机 ...
随机推荐
- 一、docker的介绍
一.虚拟化和容器 虚拟化介绍 操作系统层虚拟化是指通过划分一个宿主操作系统的特定部分,产生一个个隔离的操作执行环境.操作系统层的虚拟化是操作系统内核直接提供的虚拟化,虚拟出的操作系统之间共享底层宿主操 ...
- vulnhub靶场之ICA: 1
准备: 攻击机:虚拟机kali.本机win10. 靶机:ICA: 1,网段地址我这里设置的桥接,所以与本机电脑在同一网段,下载地址:https://download.vulnhub.com/ica/i ...
- k8s 中的 ingress 使用细节
k8s中的ingress 什么是ingress Ingress 如何使用 ingress 使用细节 参考 k8s中的ingress 什么是ingress k8s 中使用 Service 为相同业务的 ...
- 如何在 Inno Setup 中关联多种文件格式
问题描述 Inno Setup 是一款十分强大的 Windows 安装程序制作软件,可以通过编写并编译 iss 脚本来创建安装包.之前都是直接将 Pyinstaller 生成的文件夹压缩为 zip 格 ...
- pinpoint部署
pinpoint是一个分析大型分布式系统的平台,提供解决方案来处理海量跟踪数据,主要面向基于tomcat的Java 应用. pinpoint使用HBASE储存数据. 下面介绍pinpoint部署及应用 ...
- 我服了!SpringBoot升级后这服务我一个星期都没跑起来!(上)
最近由于各方面的原因在准备升级 Spring Cloud 和 Spring Boot,经过一系列前置的调研和分析,决定把Spring Boot 相关版本从 2.1.6 升级到 2.7.5,Spring ...
- 2022春每日一题:Day 30
题目:[JSOI2009]电子字典 读完题后,暴力?确实,计算一下时间复杂度最坏情况下,20263*10000=1.5e8,卡一下常可以直接卡到7e7,最严格来说应该卡的过去,但是此题数据可以直接卡过 ...
- 【云原生 · Kubernetes】部署博客系统
[云原生 · Kubernetes]Kubernetes运维 接着上次的内容,后续来了! (1)配置NFS服务 master节点安装NFS与RPC服务: # yum install -y nfs-ut ...
- 数据结构(二):括号匹配(C++,栈)
好家伙,写题,题目代码在最后 来吧, 1.栈 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表. 这一端被称为栈顶,相对地,把另一端称为栈底. 向一个栈插入新 ...
- eclipse 无法将节点解析到句柄
将 干掉即可