JavaSE-异常
1、try catch finally 异常捕获
public class ExceptionTest {
public static void main(String[] args) {
int a = 1;
int b = 0;
int c = 2;
try {
c = a / b;
System.out.println("异常发生后");
} catch (Exception e) {
System.out.println("捕获异常...");
} finally {
System.out.println("finally ....");
}
System.out.println("异常结束:" + c);
}
}
/*
output:
捕获异常...
finally ....
异常结束:2
*/
结论:发生异常后,finally中的代码是肯定会运行的,异常捕获之后的代码也会运行。
2、catch代码块中有return关键字,程序怎么处理
public class ExceptionTest2 {
public static void main(String[] args) {
int a = 1;
int b = 0;
int c = 2;
try {
c = a / b;
System.out.println("异常发生后");
} catch (Exception e) {
System.out.println("捕获异常...");
return; //注意这个关键字
} finally {
System.out.println("finally ....");
}
System.out.println("异常结束:" + c);
}
}
/*
output:
捕获异常...
finally ....
*/
结论:在catch中有 return 关键字,finally中的代码也一定会执行,但是异常捕获之后的代码不会再运行了。
3、throw new Exception的使用
public class ThrowExceptionTest {
public static void main(String[] args) {
ThrowExceptionTest te = new ThrowExceptionTest();
try {
te.calculate(0);
} catch (Exception e) {
System.out.println("计算异常---->:" + e.getMessage());
e.printStackTrace();
}
}
public void calculate(int a) {
try {
int b = 2/a; //这里会有异常
} catch (Exception e) {
System.out.println("进入catch");
throw new BizException("计算错误");
} finally {
System.out.println("进入finally");
}
}
}
/*
out.pring:
进入catch
进入finally
计算异常---->:计算错误
*/
结论:在catch中抛出的异常会在调用它的上层方法中捕获到
public class ThrowExceptionTest2 {
public static void main(String[] args) {
ThrowExceptionTest2 te = new ThrowExceptionTest2();
try {
te.getFileUrl(null);
} catch (Exception e) {
System.out.println("获取文件异常---->:" + e.getMessage());
e.printStackTrace();
}
}
public String getFileUrl(String fileName) {
if(StringUtils.isBlank(fileName)) {
throw new BizException("文件名为空");
}
return fileName;
}
}
/*
out.pring:
获取文件异常---->:文件名为空
*/
结论:普通语句中抛出的异常,会在调用它的上层方法中捕获到。
4、方法throws 异常(RuntimeException,Exception),调用它的上层方法是怎么处理的
public class ThrowRuntimeExceptionTest1 {
public void f() throws RuntimeException{
System.out.println("我抛出了RuntimeException");
}
public void g() throws Exception{
System.out.println("我抛出了Exception");
}
public static void main(String[] args) {
ThrowRuntimeExceptionTest1 test = new ThrowRuntimeExceptionTest1();
test.f(); //这里不用捕获异常
try {
test.g(); //这里必须try catch,否则会编译出错
} catch (Exception e) {
e.printStackTrace();
}
}
}
结论:方法 throws Exception,在调用它的上层方法必须要try catch,否则编译会出错。方法 throws RuntimeException,在调用它的上层方法不用强制try catch 不会有编译出错。
5、JDK7异常处理的新语法
public class Jdk7Exception {
public static void main(String[] args) {
try {
System.out.println("代码片段.....");
} catch (IllegalArgumentException | ArithmeticException e) { //一个catch块中可以捕获多个异常
e.printStackTrace();
}
}
}
参考:
https://gitee.com/play-happy/base-project
JavaSE-异常的更多相关文章
- JavaSE 异常抛光解析
异常 异常指的是程序中的不正常现象,一般异常都是由第三方数据的使用造成的.java中每种异常现象都会有一个对应的异常类.java对异常的处理方式就是终止程序.异常机制其实是为了帮助我们找到程序中的问题 ...
- [javaSE] 异常捕获
异常:程序在运行时出现的不正常现象 Throwable |——Error |——Exception 严重级别:Error类和Exception类 异常的处理:try{}catch{}finally{} ...
- java新手笔记23 异常
1.import package com.yfs.javase; import java.util.Scanner; //import java.lang.String;//默认导入 public c ...
- Java基础10:全面解读Java异常
更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...
- 夯实Java基础系列10:深入理解Java中的异常体系
目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...
- JavaSE学习笔记(6)---异常
JavaSE学习笔记(6)---异常 软件程序在运行过程中,非常可能遇到问题,我们称之为异常,英文是:Exception,意思是例外.遇到这些例外情况,或者叫异常,我们怎么让写的程序做出合理的处理 ...
- [007] - JavaSE面试题(七):异常
第一期:Java面试 - 100题,梳理各大网站优秀面试题.大家可以跟着我一起来刷刷Java理论知识 [007] - JavaSE面试题(七):异常 第1问:Error和Exception的区别? E ...
- javase基础笔记4——异常/单例和类集框架
继承 extends final关键 多态 是在继承的基础上 接口 interface 异常 exception 包的访问可控制权限 private default protect public 异常 ...
- JavaSE复习_7 异常
△子父类涉及的异常问题: 1.子类在覆盖方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类,且只能抛出异常的子集 2.如果父类抛出了多个异常,子类只 ...
- 《Java从入门到放弃》JavaSE入门篇:异常
异常!!!看看生活中的异常例子: 正常情况下,从家到公司上班,只需要20分钟!但如果在路上碰到堵车或修路或车突然自燃等问题,那就没办法正常去上班了.其中堵车或修路或车突然自燃等问题就属于异常. 碰到异 ...
随机推荐
- SpringBoot初探
一:项目创建 个人用的是IDEA来做Demo的: 1.先创建一个空项目,然后创建一个基于Maven的java application项目: 2.创建好后配置pom.xml文件并最终reimport & ...
- crontab使用环境变量
两种方式: 1)直接在crontab中定义变量,如: A=123 * * * * * echo $A > /tmp/a.txt 注意在定义变量时不能使用$引用其它变量,如下面的做法错误: A=1 ...
- springMVC注解(一)Controller
HelloWorld程序 Step1 编写web.xml文件 <?xml version="1.0" encoding="UTF-8"?> < ...
- 20155326 2016-2017-2《Java程序设计》课程总结
20155326 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 20155326刘美岑的第一次作业:第一次写博客,写下了对java的期待 20155326 ...
- 区间DP石子合并问题 & 四边形不等式优化
入门区间DP,第一个问题就是线性的规模小的石子合并问题 dp数组的含义是第i堆到第j堆进行合并的最优值 就是说dp[i][j]可以由dp[i][k]和dp[k+1][j]转移过来 状态转移方程 dp[ ...
- ace富文本编辑器
在线文本编辑器(ACE Editor) ACE是一个实现了语法着色功能的基于Web的代码编辑器,具有良好的代码提示功能和大量的主题. 一.资源获取 官方网址:https://ace.c9.io/ Gi ...
- AngularJS 控制器 Live Dom
控制器的作用是在$scope对象上创建属性和方法,控制器的作用域是$scope,所以作用域是针对控制器来讲的.另外,控制器实例不是单例,每次都会重新实例化,不像服务是单例的. 其是注册在模块上的,如 ...
- 微擎开启redis memcache文档2
微擎开启redis memcache 2018年01月20日 14:39:54 luogan129 阅读数:2161更多 个人分类: 微信开发 版权声明:本文为博主原创文章,未经博主允许不得转载. ...
- Android-Kotlin简单计算器功能
上一篇博客 Android-Kotlin-配置/入门 配置好了 AndroidStudio Kotlin 的环境: 选择包名,然后右键: 选择Class类型,会有class: 创建CounterCla ...
- MySql and Oracle Data Type Mappings
the default settings used by SQL Developer to convert data types from MySQL to Oracle. SQL Developer ...