一.异常

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. DirectFB的架构介绍

    **************************************************************************************************** ...

  2. 【lucene系列学习】排序

    用lucene3实现搜索多字段并排序功能(设置权重)    

  3. angularjs jsonp跨域

    <script> (function(angular){ "use strict" var app= angular.module('appController',[] ...

  4. Elasticsearch5中安装Elasticsearch-head插件

    介绍 elasticsearch-head是一个用于管理Elasticsearch的web前端插件,搞过ES的同学应该都了解.该插件在es5中可以以独立服务的形式进行安装使用.本文将介绍如何操作. 相 ...

  5. 单片机IAP学习

    1.IAP是什么--简介 IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可 ...

  6. mysql安装出现的问题

    ERROR 1045 (28000): Access denied for user root@localhost (using password: NO) 错误描述: Mysql中添加用户之后可能出 ...

  7. Homebrew安装和使用

    ## homebrew使用1. 安装 `$ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/m ...

  8. MySQL索引和查询优化

    对于任何DBMS,索引都是进行优化的最主要的因素.对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降. 如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅 ...

  9. app界面设计字体规范

    通过对不同类型的app进行总结,总结出app的字体规范. 一.字体选择 1.IOS:苹果ios 9系统开始,系统最新的默认中文字体是:苹方.英文字体是: San Francisco 2.Android ...

  10. LindAgile.Modules模块化的设计

    在LindAgile中有一个比较主推的技术,就是模块化,一切组件都可以被抽象成一个小小的模块,而每个小模块的实现可能又有多种方式,如日志模块可以有LindLoger,Log4net等实现,而具体在程序 ...