一.异常

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. perf学习-linux自带性能分析工具

    目前在做性能分析的事情,之前没怎么接触perf,找了几篇文章梳理了一下,按照问题的形式记录在这里. 方便自己查看.   什么是perf? linux性能调优工具,32内核以上自带的工具,软件性能分析. ...

  2. SpringMVC是什么?

    一,首先是一个MVC框架. 在web模型中,MVC是一种很流行的框架,通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,是为了简化开发,减少出错.还是为 ...

  3. 纯HTML课表

    table标签构造课表 table标签常用于制作表格以及简单布局,于是我就玩了下table标签,用table标签也能构造出很漂亮的页面呢,虽然在博客页面加入与实际打开页面稍微有点出入,但还是可以接受的 ...

  4. 分布式锁与实现(二)——基于ZooKeeper实现

    引言 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...

  5. 字符型SQL注入

      字符型SQL注入 很早就基于DVWA实现了字符型的SQL注入,但是一直感觉自己没有理解的特别清楚,这次又看了一下网上的一些讲解,试着总结一下.以下是我的一写浅薄见解,请大家批判着看. 基本原理 看 ...

  6. 基于jQuery的自定义插件:实现整屏分页转换的功能

    动态创建jQuery插件 一.实现功能: 1.基本功能:自适应式整屏分页功能的实现 2.通过鼠标点击标签页转换分页,支持键盘上下左右键的转换分页,同样支持 鼠标滚轮上下滑动转换分页 3.切屏时的动画效 ...

  7. Failed to read artifact descriptor for xxx:jar 的Maven项目jar包依赖配置的问题解决

    在开发的过程中,尤其是新手,我们经常遇到Maven下载依赖jar包的问题,也就是遇到“Failed to read artifact descriptor for xxx:jar”的错误. 对于这种非 ...

  8. MySQL游标的简单实践

    Q:为什么要使用游标? A: 在存储过程(或函数)中,如果某条select语句返回的结果集中只有1行,可以使用select into语句(上几篇博客有介绍到用法)来得到该行进行处理:如果结果集中有多行 ...

  9. 【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中

    [exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后 ...

  10. ConcurrentHashMap实现原理及源码分析

    ConcurrentHashMap实现原理 ConcurrentHashMap源码分析 总结 ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对Ha ...