【Java】异常 —— throw, throws, try catch 相关内容
嗯……面试考到了这个,又是一个如无意外
那么接下来就总结吧
一、什么是异常
程序运行过程中发生的异常事件。

RuntimeException通常是因为编程员因为疏忽没有检查而引起的错误。
二、Exception和Error的区别
Exception:
1.可以是可被控制(checked)或者不可控制(unchecked);
2.表示一个由程序员导致的错误;
3.应该在应用程序级被处理;
Error:
1.总是不可控制的(unchecked);
2.经常用来表示系统错误或者底层资源错误;
3.如果可能的话,应该在系统级被捕捉;
三、throw、throws、try...catch...
①throw
②throws
③try...catch...finally...以及语句中出现return的情况
④自定义异常
①
throw是语句抛出一个异常,语法:
throw e
例子:
String a = "abcd";
if(a.length()>5) {
throw new NullPointerException(); //具体的异常需与方法内容相关,否则编译不通过
}
if(a.length()>5) {
throw new IndexOutOfBoundsException();
}
if(a.length()>5) {
//throw new IOException(); 编译不通过
}
throws是方法抛出一个异常,语法:
public void doSomething() //具体方法
throws Exception1, Exception2{}//抛出的异常 //示例
public static int calculate(int a, int b) throws ArithmeticException {
int c = a/b;
return c;
}
throw和throws的总结:
| throw | throws | |
| 定义 | 语句抛出异常 | 声明异常/方法抛出异常 |
| 语法 | throw e | [方法] throws e1,e2 |
| 位置 | 用于方法内 | 位于方法声明后 |
| 使用情况 |
不能单独使用, 通常与try...catch搭配使用 |
能够单独使用 |
| 编译 | 对方法中可能出现的异常进行捕获 | |
| 运行 | 抛出异常实例 | 只有出现异常时才抛出 |
try...catch...finally
如果以下部分中出现return,其返回结果将是如何?
public static int method(int a,int b) {
try {
int c = a/b; //1
return 1; //2
} catch (Exception e) {
System.out.println("catch"); //3
return 2; //4
} finally {
System.out.println("finally"); //5
return 3; //6
}
}
try、catch中任一部分含有return:首先执行try\catch语句中的内容,缓存语句中return的值,最后执行finally中的内容。
因此,
①当finally中有return语句时,执行顺序为
· 没有异常时:
//执行顺序 1 → 2(缓存return的值)→5 → 6 (更改了return的值),因此打印结果为
finally
3
· 有异常时:
//执行顺序为:3 → 4(缓存return的值为2) → 5 → 6(更改缓存的return值为3)
catch
finally
3
② 当finally没有return语句时
· 没有异常时:
//执行顺序:1 → 2(缓存return的值)→ 5 → 返回return的值
finally
1
· 有异常时
//执行顺序:3 → 4(缓存return的值)→ 5 → 返回return的值
finally
2
如果返回的不是基本数据类型,可参照这篇文章:https://blog.csdn.net/zoujian1993/article/details/45362931
try..catch..中涉及运算:https://www.cnblogs.com/superFish2016/p/6687549.html
涉及的堆和栈:https://blog.csdn.net/pt666/article/details/70876410/
【Java】异常 —— throw, throws, try catch 相关内容的更多相关文章
- Java异常之try,catch,finally,throw,throws
Java异常之try,catch,finally,throw,throws 你能区分异常和错误吗? 我们每天上班,正常情况下可能30分钟就能到达.但是由于车多,人多,道路拥挤,致使我们要花费更多地时间 ...
- JAVA 异常 throw 与 throws
最近一直throw和throw new …… 获取头部罢工,要彻底生气清楚这件事,他对这个思想精华收集了很多网友.这里摘录. throws全部异常信息throw则是指抛出的一个详细的异常类型.通常在一 ...
- Java throw throws try...catch区别
java里的异常多种多样,这是一种非常有用的机制,它能帮助我们处理那些我们未知的错误,在java里,关于异常的有throw throws,还有一个try catch 程序块.接下来我们挨个看看这几个的 ...
- 异常处理(throw,throws,try,catch,finally)
一.异常 1.定义:程序在运行时出现的不正确的情况. 2.由来:问题也是生活中的事物,也可以被Java描述,并被封装成对象. 其实就是Java对不正常情况进行描述后的对象体现. 3.划分:Java对于 ...
- throw throws try catch finally return
throw throw 语句用于抛出异常,例如 throw new EOFException(). throws 当使用throw 语句抛出checked 异常后,可以不用捕获异常并处理,而是使用 ...
- final finalize finally throw throws try catch
什么是finalize()方法 finalize()方法什么时候被调用 参见网址 析构函数(finalization)的目的是什么 final 和 finalize 的区别 final以下参见网址 f ...
- java 异常 throw
throw UnsupportedOperationException(); //没有支持的操作NoSuchElementException(); //没有这样的元素
- Java 异常分析
Java 异常分析 本文是对以下内容的分析: Java异常设计 Java 异常分类 Java异常可以告诉什么问题 Java异常处理最佳实践 Java Exception 是为了处理应用程序的异常行为而 ...
- Java异常01——捕获和抛出异常
捕获和抛出异常 异常处理五个关键字 try , catch , finally , throw , throws try catch finally(快捷键:选中要要监控的代码语句 快捷键: ctrl ...
随机推荐
- awk, sed, xargs, bash
http://ryanstutorials.net/ awk: split($1, arr, “\t”) sed: sed -n '42p' file sed '42d' file sed ' ...
- [原创]II7/IIS8屏蔽YisouSpider蜘蛛
来源:http://www.0531s.com/content-46-1927014-1.html YisouSpider蜘蛛抓取网页能够导致CPU暴涨,影响其他蜘蛛和用户的访问,多次实验后,发现II ...
- stm32串口学习(二)
今天继续学习stm32的串口编程(利用库函数).上次我们说了串口的发送,这次我们说接收. 接收可以用查询的方法,也可以用中断.显然,工程中多用中断的方式,那么就来看看中断接收. 代码其实很简单,基本的 ...
- C# 获取格式
1. 身份证日期 DateTime.ParseExact((IDCard.Substring(6, 8)), "yyyyMMdd", System.Globalization.Cu ...
- Asp.Net MVC 5 Razor 视图 未将对象引用到实例
未将对象引用到实例的错误居然指向了@{Leyout=“..此处略,核实路径无误”}. 最后发现原来是在一个<select .. name="@Model.Category"& ...
- html meta标签实现页面跳转
refresh用于刷新与跳转(重定向)页面 refresh出现在http-equiv属性中,使用content属性表示刷新或跳转的开始时间与跳转的网址 <!DOCTYPE html> &l ...
- python列表生成式、列表推导式
运用列表生成式,可以快速生成list,可以通过一个list推导出另一个list,而代码却十分简洁. 格式 [x for x in 内容] [x for x in 内容 if 条件] 1:要把生成的元素 ...
- MyEclipse内存溢出问题
今天碰到的问题,先记录下来 Console报错: Java.lang.OutOfMemoryError: PermGen space 跟着步骤: 在这里加入:-Xms800m -Xmx800m -XX ...
- 《深入理解Java7核心技术与最佳实践》读书笔记(1.1)---Project Coin介绍
OpenJDK中的Coin项目(Project Coin)的目的就是为了收集对Java语言的语法进行增强的建议.在Coin项目开始之初,曾经广泛地向社区征求提议.在短短的一个月时间内就收到将近70条提 ...
- Office加载项对Excel进行读写操作
转载自我的个人主页 前言 在开发ExcelWeb插件的时候,一大亮点就是可以在web项目中操作Excel,读取Excel的内容,也可以将服务端的数据写入的 Excel中,大大方便的用户使用Excel, ...