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分钟!但如果在路上碰到堵车或修路或车突然自燃等问题,那就没办法正常去上班了.其中堵车或修路或车突然自燃等问题就属于异常. 碰到异 ...
随机推荐
- nginx负载均衡总结
在关于高并发负载均衡一文中已经提到,企业在解决高并发问题时,一般有两个方向的处理策略,软件.硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库+web服务器两处添加解决方案,其中w ...
- Fastjson和Gson零碎总结
一:用于测试的类 User类 import lombok.Data; import lombok.experimental.Accessors; /** * @author silentdoer * ...
- php,微信公众号,获取用户地理位置 定位 经纬度
<?php //php插件下载地址: https://files.cnblogs.com/files/fan-bk/jssdk_php.rar //建立一个php文件 require_once ...
- vue2.0路由-路由嵌套
vue一个重要的方面就是路由,下面是自己写的一个路由的例子: 1.引入依赖库就不必再说 2.创建组件 两种写法 第一种:间接 <template id="home"> ...
- java 获取浏览器类型
public String getBrowserType(HttpServletRequest request) { String type = "ie"; S ...
- 源项目 -> fork -> 本地 (如何把源项目的代码合并到本地然后推送给fork)
git remote -v git remote add 别名 地址 git fetch 别名 git merge 别名/分支 第一步:命令行进入到本地.git 所在的目录,查看remote 信息 ...
- 为在python中使用dotnet程序安装clr
直接在命令行中录入 pip install pythonnet 会有一个ssl错误提示 ...Could not fetch URL https://pypi.python.org/simple/py ...
- Grand Central Dispatch
什么是GCD? Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写.从基本功能上讲,GCD有点像NSOperationQueue,他们都允许 ...
- 类中main函数的快捷创建
方法一: 新建类时,选择创建 方法二: 打出main-->Alt + /
- ZUFE2486 Heap 2017-05-31 14:37 41人阅读 评论(0) 收藏
2486: Heap 时间限制: 2 Sec 内存限制: 128 MB 提交: 16 解决: 5 [提交][状态][讨论版] 题目描述 有n个非负整数,a1,a2,a3.....an. 有Q次询问 ...