Java 异常基本结构
异常的定义:阻止当前方法或作用域继续执行的情况,即程序无法正常执行下去称之为异常。
异常的基本结构:
所有不正常的类都继承与Throwable类,包括Error类和Exception类
Error一般是JVM抛出的错误,比如StackOverFlowError,OutOfMemoryError,这些错误是无法挽回的,只能结束当前Java进程的执行;
Exception异常是Java应用抛出的,分为编译时期可检测的异常(如IOException)和运行时期的异常(NullPointerException)
编译时期可检测的异常必须要处理,否则编译器会报错误,
运行时期的异常RuntimeException不需要强制处理,Exception异常一般可以通过捕获处理以后,程序可以继续正常执行。
java异常常用的解决语句:
栗子一:
try catch finally 语句:
public static void main(String[] args) {
int []arr=new int[5];
try {
arr[5]=0;
System.out.println(5);
}catch (ArrayIndexOutOfBoundsException e){
System.out.println("下标越界啦!");
System.out.println("e.getMessage()"+e.getMessage());
System.out.println("e.getCause()"+e.getCause());
System.out.println("e.toString()"+e.toString());
}finally {
System.out.println("finally执行了");
}
}
运行结果:
下标越界啦!
e.getMessage()5
e.getCause()null
e.toString()java.lang.ArrayIndexOutOfBoundsException: 5
finally执行了
try语句块通常包括可能发生异常的代码,try语句块发生异常时,不再继续执行,try语句不能单独使用
catch用来捕获异常并且发出警告:提示、检查配置、网络连接,记录错误等。
每一个catch块用于处理一个异常。异常匹配是按照catch块的顺序从上往下寻找的,只有第一个匹配的catch会得到执行。匹配时,不仅运行精确匹配,也支持父类匹配,因此,如果同一个try块下的多个catch异常类型有父子关系,应该将子类异常放在前面,父类异常放在后面,这样保证每个catch块都有存在的意义。
finally最终执行的代码,用于关闭和释放资源。
异常的常用方法:
e.toString()获取的信息包括异常类型和异常详细消息,
e.getCause()获取产生异常的原因
e.getMessage()只是获取了异常的详细消息字符串。
栗子二:
throw是用于抛出异常。
public static void main(String[] args) {
int[] arr = new int[5];
int i = 5;
if (i > arr.length - 1) throw new ArrayIndexOutOfBoundsException("数组下标越界");
System.out.println(arr[i]);
}
}
throws用在方法签名中,用于声明该方法可能抛出的异常,方法的调用者来处理异常
public static void main(String[] args) {
try {
test();
}catch (Exception e){
System.out.println("捕获异常");
}
}
private static void test() throws ArrayIndexOutOfBoundsException{
int[] arr = new int[5];
int i = 5;
if (i > arr.length - 1) throw new ArrayIndexOutOfBoundsException("数组下标越界");
System.out.println(arr[i]);
}
注意的点: 1、不管有木有出现异常或者try和catch中有返回值return,finally块中代码都会执行;
2、finally中最好不要包含return,否则程序会提前退出,返回会覆盖try或catch中保存的返回值。
3. 如果方法中try,catch,finally中没有返回语句,则会调用这三个语句块之外的return结果
4. 在try语句块或catch语句块中执行到System.exit(0)直接退出程序
Java 异常基本结构的更多相关文章
- Atitit java的异常exception 结构Throwable类
Atitit java的异常exception 结构Throwable类 1.1. Throwable类 2.StackTrace栈轨迹1 1.2. 3.cause因由1 1.3. 4.Suppres ...
- Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换
Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换 { "@type":"java.lang.Runti ...
- 浅谈java异常[Exception]
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...
- 2.Java异常学习
1.Java异常的概念 异常的例子 1.除法就是一个需要捕获异常的例子,除数又可能是0 异常处理的基本流程如下 一旦发生异常,就使得程序不按照原来的流程继续的运行下去 a.程序抛出异常 try{ th ...
- java异常架构图 和几个面试题
1.java异常架构图 粉红色的是受检查的异常(checked exceptions),其必须被 try{}catch语句块所捕获,或者在方法签名里通过throws子句声明.受检查的异常必须在编译时被 ...
- Java异常(一) Java异常简介及其架构
概要 本章对Java中的异常进行介绍.内容包括:Java异常简介Java异常框架 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3544168.html ...
- 浅析Java异常
1.什么是异常 结构不佳的代码不能运行,这是Java的基本理念. 发现错误的理想时机是在编译期.然而,编译器并不能发现所有的错误,余下的问题就需要在程序运行时解决.这就需要错误能通过某种方式,把适当的 ...
- Java异常的深入研究与分析
前言 本文是异常内容的集大成者,力求全面,深入的异常知识研究与分析.本文由金丝燕网独家撰写,参考众多网上资源,经过内容辨别取舍,文字格式校验等步骤编辑而成,以飨读者.对于本文的内容,建议小白需要多多思 ...
- 全面理解Java异常的运行机制
1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话. ...
随机推荐
- 如何删除github里的项目
1.登录github网站后,就会看到如下画面,在头像下面有个你的项目资源这一栏,假如我要删除名为“hhh”的项目,现在鼠标点进这个项目里面 2.进去后点setting 点进去后,默认是选择了OPtio ...
- 47-Ubuntu-系统信息-2-df和du查看磁盘和目录空间占用
序号 命令 作用 01 df -h disk free 显示磁盘剩余空间;-h以人性化的方式显示文件大小 02 du -h [目录名] disk usage 显示目录下的文件大小 注:显示磁盘信息的时 ...
- 百度网盘不限速下载PanDownload网页版+IDM
1.安装配置IDM 下载链接:链接:https://pan.baidu.com/s/13P4ae-IPgi5Y13CGEZgmlg 提取码:do44 安装后在浏览器(推荐chrome或Firefox) ...
- BOM的构成
1.DOM 和 BOM 的区别 DOM:文档对象模型,把[文档]当做一个[对象]来看待,DOM的顶级对象是document 主要学习的是操作页面元素,DOM 是 W3C 的标准规范 BOM:浏览器对象 ...
- canvas-nest.js 设置网页背景
只需要在HTML,body中加如这行代码就可以实现效果,可以在color中修改颜色 <!DOCTYPE html> <html> <head> <meta c ...
- scip 练习2.18
(define (append a b ) (if (null? a )b (cons (car a) (append (cdr a) b)))) (define (reverse l) (appen ...
- java两个栈实现一个队列&&两个队列实现一个栈
栈:先进后出 队列:先进先出 两个栈实现一个队列: 思路:先将数据存到第一个栈里,再将第一个栈里的元素全部出栈到第二个栈,第二个栈出栈,即可达到先进先出 源码: class Queue<E&g ...
- 【JZOJ3292】【BZOJ4415】【luoguP3988】发牌
description 在一些扑克游戏里,如德州扑克,发牌是有讲究的.一般称呼专业的发牌手为荷官.荷官在发牌前,先要销牌(burn card).所谓销牌,就是把当前在牌库顶的那一张牌移动到牌库底,它用 ...
- 通过jquery获取页面信息
获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document ...
- clipboard.js实现页面内容复制到剪贴板
clipboard.js实现复制内容到剪切板,它不依靠flash以及其他框架,应用起来比较简单 <input type="text" name="copy_txt& ...