一.异常

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)异常的更多相关文章

  1. Java并发编程:Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  2. 【转】Java ConcurrentModificationException异常原因和解决方法

    原文网址:http://www.cnblogs.com/dolphin0520/p/3933551.html Java ConcurrentModificationException异常原因和解决方法 ...

  3. 你真的会阅读Java的异常信息吗?

    给出如下异常信息: java.lang.RuntimeException: level 2 exception at com.msh.demo.exceptionStack.Test.fun2(Tes ...

  4. 9、Java ConcurrentModificationException异常原因和解决方法

    Java ConcurrentModificationException异常原因和解决方法 在前面一篇文章中提到,对Vector.ArrayList在迭代的时候如果同时对其进行修改就会抛出java.u ...

  5. Java:异常小记

    Java:异常小记 对 Java 中的 异常 ,做一个微不足道的小小小小记 Error 和 Exception 相同点: Exception 和Error 都是继承了 Throwable 类,在 Ja ...

  6. Java 17 新功能介绍(LTS)

    点赞再看,动力无限.Hello world : ) 微信搜「程序猿阿朗 」. 本文 Github.com/niumoo/JavaNotes 和 未读代码博客 已经收录,有很多知识点和系列文章. Jav ...

  7. Java基础 - 异常详解

    异常的层次结构 Throwable Throwable 是 Java 语言中所有错误与异常的超类. Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示 ...

  8. 我所使用的生产 Java 17 启动参数

    JVM 参数升级提示工具:jacoline.dev/inspect JVM 参数词典:chriswhocodes.com Revolut(英国支付巨头)升级 Java 17 实战:https://ww ...

  9. Java 17 中的模式匹配与和类型

    Java 17 中的模式匹配与和类型 从 Spring Security 获取用户谈起 使用 Spring Security做用户校验和权限控制时,常常使用和线程绑定的容器来获取当前登录用户. // ...

随机推荐

  1. python基本数据类型——set

    一.集合的定义 set集合,是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数 ...

  2. JS模式---发布、订阅模式

    发布订阅模式又叫观察者模式,它定义一种一对多的依赖关系, 当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知. document.body.addEventListener('click', ...

  3. mysql分页查询优化

    由于MySql的分页机制:并不是跳过 offset 行,而是取 offset + N 行,然后返回放弃前 offset 行,返回N 行, 所以当 offset 特别大的时候,效率就非常的低下,要么控制 ...

  4. hdu1540线段树

    https://vjudge.net/contest/66989#problem/I #include<iostream> #include<cstdio> #include& ...

  5. C#集合之字典

    字典表示一种复杂的数据结构,这种数据结构允许按照某个键来访问元素.字典也称为映射或散列表. 字典的主要特性是能根据键快速查找值.也可以自由添加和删除元素,这有点像List<T>(http: ...

  6. Java中处理二进制移位

    我相信,这篇文章读起来会相当有趣. 文章中编程语言是Java,用Java的原因:第一,Java不做数据溢出校验,这样我们可以忽略溢出异常:第二,Java普及率比较高,就像是python或shell,几 ...

  7. [刷题]算法竞赛入门经典(第2版) 5-12/UVa511 - Do You Know the Way to San Jose?

    题意:N张地图,查找某地点在不在某些地图上,若在,使用细节多的地图.使用哪个地图的破要求挺多,细心一点就好. 代码:(Accepted,0.000s) //UVa511 - Do You Know t ...

  8. @PathVariable和@RequestParam的区别,@SessionAttributes

    简介: handler method参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类: A:处理requet uri部分(这里指uri template中variable,不 ...

  9. React入门---开始前的准备(下)-3

    React开始前的准备(下): ·配置webpack热加载(热加载就是修改js文件,点击保存之后,浏览器会自动刷新,提高开发效率) 1. 全局安装: npm install webpack -g np ...

  10. 抓包工具 Charles 使用心得

    前言 虽然实习工作还没有着落,但学习还是要继续的嘛,今天就来学习使用下 Mac 下截取网络封包的工具:Charles. 我想,如果你是个善于利用搜索引擎的人,那么在 Google 中输入「Charle ...