Java(17)异常
一.异常
1.1程序执行过程中出现的影响程序运行正常运行的现象.
1.2异常语法
try{
//代码块
}catch(异常类型 e){
}catch(异常类型 e){
}...{
}finally{
}
注意:try:表示可能出现异常的代码块
catch:抓取异常,并进行处理
可能抓取多个异常,异常范围要从小到大抓取
并且只会执行第一个匹配的异常类型
finally:最后的,不管是否出现异常,finally中的代码一直会执行,除非虚拟机(syatem.exit(1)这个情况外)
使用if结构:
public class Text1 {
/*
* 1.什么是异常? 定义:异常是程序在执行时发生的事件,它会打断指令的正常流程。
*/
public static void main(String[] args){
Scanner input = new Scanner(System.in);
System.out.println("请输入被除数");
int num = 0;
if(input.hasNextInt()){
num = input.nextInt();
}else{
System.out.println("输入的被除数不是整数,程序退出");
System.exit(1);
}
System.out.println("请输入除数");
int num1 = 0;
if(input.hasNextInt()){
num1 = input.nextInt();
if(0==num1){
System.out.println("输入的除数是0,程序退出");
System.exit(1);
}
}else{
System.out.println("输入的除数不是整数,程序退出");
System.exit(1);
}
System.out.println(String.format("%d/%d =%d",num,num1,num/num1));
System.out.println("感谢使用本程序");
}
}
示例1
运行结果为:

使用try-catch- finally:
//使用 try catch finally处理异常
public class Test2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入被除数");
try {
int num = input.nextInt();
System.out.println("请输入除数");
int num1 = input.nextInt();
System.out.println(String.format("%d/%d =%d", num, num1, num / num1));
} catch (Exception e) {
System.err.println("出现错误,被除数和除数必须是整数," + "除数不能为零");
System.out.println(e.getMessage());
//err是运行期异常和错误反馈的输出流的方向,但它只能在屏幕上打印,即使你重定向也一样
//重定向就是通过各种方法将各种网络请求重新定个方向转到其他位置
//用err打印出的字符串·,再用eclipse的input会显示呈红色;
} finally {
System.out.println("感谢使用本程序!");
}
}
}
/*
* 如果try块中所有语句正常执行完毕,那么finally块就会执行
* 如果try语句块在执行过程中碰到异常,无论这种异常能否被catch块捕捉到,都将执行finally块中的代码
* 注意:即使在try块和catch块中存在return语句,finally块中语句也会执行
* 发生异常时的执行顺序:执行try块或catch中return之前的语句,执行finally块中的语句, 执行try或catch中的return语句退出
* finally 块中语句不被执行的唯一情况:在异常处理代码中执行System.exit(1),将退出java虚拟机
*/
示例2
运行结果为:

1.3 throws 声明异常
a.就是当前方法,不能解决这个异常的时候,必须把这个异常交给上一个调用的去处理
b.语法
访问修饰符 返回值类型 方法名(参数列表)[throws 异常]{}
二.java异常体系
Throwable
|--error:(出现不能通过程序处理的错误)
|--Exception:可以同程序抓取或者抛出的错误
|--检查异常(非运行时异常):编译阶段会出现的异常
SQlExceqtion,
IOException,
ClassNotFoundException
|-- 非检查异常(运行阶段异常RunTimeException):运行简单会出现的异常
NullPointerException,
ArrayIndexOutOfBoundsException,
ClassCastException
注意:cgecked异常,是必需处理的
运行时异常,可以不处理
Java(17)异常的更多相关文章
- Java并发编程:Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...
- 【转】Java ConcurrentModificationException异常原因和解决方法
原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 ...
- 你真的会阅读Java的异常信息吗?
给出如下异常信息: java.lang.RuntimeException: level 2 exception at com.msh.demo.exceptionStack.Test.fun2(Tes ...
- 9、Java ConcurrentModificationException异常原因和解决方法
Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...
- Java:异常小记
Java:异常小记 对 Java 中的 异常 ,做一个微不足道的小小小小记 Error 和 Exception 相同点: Exception 和Error 都是继承了 Throwable 类,在 Ja ...
- Java 17 新功能介绍(LTS)
点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Jav ...
- Java基础 - 异常详解
异常的层次结构 Throwable Throwable 是 Java 语言中所有错误与异常的超类. Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示 ...
- 我所使用的生产 Java 17 启动参数
JVM 参数升级提示工具:jacoline.dev/inspect JVM 参数词典:chriswhocodes.com Revolut(英国支付巨头)升级 Java 17 实战:https://ww ...
- Java 17 中的模式匹配与和类型
Java 17 中的模式匹配与和类型 从 Spring Security 获取用户谈起 使用 Spring Security做用户校验和权限控制时,常常使用和线程绑定的容器来获取当前登录用户. // ...
随机推荐
- servlet研究学习总结--OutputStream和PrintWriter的区别
当用户和浏览器其进行交互时,会给服务器发送http请求,Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.requ ...
- 蓝桥杯-写日志-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- js中面向对象编程
一.理解对象: 第一种:基于Object对象 var person = new Object(); person.name = 'My Name'; person.age = 18; person.g ...
- hdu2389二分图之Hopcroft Karp算法
You're giving a party in the garden of your villa by the sea. The party is a huge success, and every ...
- C#中在比较自定义对象的时候要重写Equals方法
using System;using System.Collections.Generic;using System.Text; namespace Equal{ using System; c ...
- 单例模式——Java EE设计模式解析与应用
单例模式 目录: 一.何为单例 二.使用Java EE实现单例模式 三.使用场景 一.何为单例 确保一个类只有一个实例,并且提供了实例的一个全局访问点 1.1 单例模式类图 ...
- [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
简介 在ABP中,提供了通知服务.它是一个基于实时通知的基础设施.分为订阅模式和发布模式. 本次会在项目中使用发布模式来演示一个用户注册后,收到的欢迎信息. 发布模式 首先我们在领域层建立" ...
- Thinkphp模板简单入门
Thinkphp模板概述: ThinkPHP内置了一个基于XML的性能卓越的模板引擎,这是一个专门为ThinkPHP服务的内置模板引擎,使用了XML标签库技术的编译型模板引擎,支持两种类型的模板标签, ...
- pdf.js实现在HTML下直接浏览pdf文档,无需插件即可实现
近期,有一个朋友做B端,服务器存了大量的金融类数据,很多都是pdf文档,他现在的做法是,先将pdf文档转换成flash,再放到浏览器上给用户浏览,但是他告诉我,这种体验太差了,而且很好资源,空间已经快 ...
- Docker - 导出导入容器
导出和导入容器 使用docker export命令可以将本地容器导出为容器快照文件. 使用docker import命令可以将容器快照文件导入到本地镜像库,也可以通过指定URL或者某个目录来导入. 特 ...