Java基础(basis)-----异常与错误处理
1.编译型异常和运行时异常
编译时异常是指程序正确 而由外界条件不满足而产生的异常 java 中要求必须去捕捉住这类异常 不然无法通过编译
运行时异常是指程序存在着bug 如空指针异常 数组下标越界 都属于 运行时异常
2.Error和Exception
Exception:是程序本身可以处理的异常
Error:是程序无法处理的错误,这些错误标识故障发生于虚拟机自身或者发生在虚拟机试图执行应用时,一般不需要程序处理,例如:内存空间不足,栈溢出
3.throws 在方法的声明处,显式的抛出该异常对象的类型
package com.exception; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * throws 在方法的声明处,显式的抛出该异常对象的类型 * 不推荐 * @author yyx 2019年2月21日 */ public class ExceptionThrows { public static void main(String[] args) throws FileNotFoundException, IOException { String filepath = "D:" + File.separator + "exception.txt"; FileOutputStream fos = new FileOutputStream(filepath); String content = "今天是2018/4/8,天气很好"; byte[] array = content.getBytes(); fos.write(array); fos.close(); } }
4.throw 在方法内抛出异常对象
package com.exception; /** * throw 在方法内抛出异常对象 不推荐 * * @author yyx 2019年2月21日 */ public class ExceptionThrow { public static void main(String[] args) { try { int i = 3; if (i > 4) { System.out.println("恭喜你,答对了!"); } else { throw new MyException("对不起,算数错误"); } } catch (Exception e) { System.out.println(e.getMessage()); } } } class MyException extends Exception { private static final long serialVersionUID = 1L; public MyException(String msg) { super(msg); } }
5.try.....catch....finally......
package com.exception; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; /** * 推荐 * @author yyx * 2019年2月21日 */ public class ExceptionTryCatch { public static void main(String[] args) { String filepath = "D:" + File.separator + "exception.txt"; FileOutputStream fos = null; try { fos = new FileOutputStream(filepath); String content = "今天是2018/4/8,天气很好"; byte[] array = content.getBytes(); fos.write(array); } catch (IOException e) { e.printStackTrace();// 一般此处写入日志 } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ReturnExceptionDemo reDemo=new ReturnExceptionDemo(); try { reDemo.methodA(); } catch (Exception e) { System.out.println(e.getMessage()); } int i = reDemo.methodB(); System.out.println(i); } } class ReturnExceptionDemo { void methodA() { try { System.out.println("进入方法A"); throw new RuntimeException("制造异常"); } finally { System.out.println("用A方法的finally"); } } int methodB() { try { System.out.println("进入方法B"); return 1; } finally { System.out.println("调用B方法的finally"); return 2; } } }
6.throws和throw的区别
- 位置不同:throws用在函数上,后面跟的是异常类,可以跟多个;而throw用在函数内,后面跟的是异常对象
- 功能不同:throws用来声明异常,让调用者只知道该功能可能出现的问题,可以给出预先的处理方式;throw抛出具体的问题对象
- throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象
- 两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理
Java基础(basis)-----异常与错误处理的更多相关文章
- java基础之异常 · fossi
在开发中,异常处理是一个不可绕开的话题,我们对于异常的处理已经非常熟练了,对于异常本身的概念.用法等不再赘述了,直接结合面试问题来加深对异常的理解吧. Throwable 可以用来表示任何可以作为异常 ...
- 【java基础之异常】死了都要try,不淋漓尽致地catch我不痛快!
目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...
- JAVA基础知识|异常
一.基础知识 处理异常,java提供了一个优秀的解决方案:异常处理机制. java把异常当作对象来处理,所有的异常都是由Throwable继承而来,但在下一层立即分解为两个分支:Error和Excep ...
- 【java基础之异常】死了都要try
目录 1.异常 1.1 异常概念 1.2 异常体系 1.3 异常分类 1.4 异常的产生过程解析 2. 异常的处理 2.1 抛出异常throw 2.2 Objects非空判断 2.3 声明异常thro ...
- java基础之 异常
Throwable是所有Java程序中错误处理的父类,有两种资类:Error和Exception. Error:表示由JVM所侦测到的无法预期的错误,由于这是属于JVM层次的严重错误,导致JVM无法继 ...
- Java基础笔记-异常
Java中的异常机制: Throwable类是 Java 语言中所有错误或异常的超类.主要包括两个子类: Error和Exception. 一般中要处理的异常是Exception. Java中最常见的 ...
- java的常见异常与错误总结
算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeAr ...
- Java基础之异常
1.异常的概念 异常:程序在运行时出现的不正常情况,也可以说是出现的问题: Java中的异常:出现的不正常的问题也是一类事物,这类事物有一些共性的东西,比如有名称,有产生的原因等,将这些共性的部分抽取 ...
- 黑马程序员----java基础:异常
dff ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 经常写程序的人对try...catch...finally语句肯定是不陌生的了.但是好多 ...
随机推荐
- Java线程的状态分析
线程状态 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于“可运行线程池”中,变得可运行,只 ...
- 【pyqtgraph绘图】Qt速成课程
解读官方API-Qt速成课程 参考:http://www.pyqtgraph.org/documentation/qtcrashcourse.html Qt速成课程 PyQtGraph广泛使用Qt来生 ...
- React之生命周期
哈喽,这是我的第一篇博客,请大家多多关照~ 追根溯源:What's the lifeCycle? 生命周期函数指在某一时刻组件会自动调用执行的函数: React生命周期概览: 接下来我们就着生命周期的 ...
- 兼容ie10及以上css3加载进度动画
html <div class="spinner"> <div class="rect1"></div> < ...
- Uncontrolled memory mapping in camera driver (CVE-2013-2595)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/hu3167343/article/details/34434235 /* 本文章由 莫灰灰 编写,转 ...
- freespace_evidence
根据视点计算点云的freespace_evidence 参考资料: Bresenham's line algorithm:https://en.wikipedia.org/wiki/Bresenham ...
- Spark中的partition和block的关系
hdfs中的block是分布式存储的最小单元,类似于盛放文件的盒子,一个文件可能要占多个盒子,但一个盒子里的内容只可能来自同一份文件.假设block设置为128M,你的文件是250M,那么这份文件占3 ...
- (转)Docker镜像构建上下文(Context)
镜像构建上下文(Context) Docker在构建镜像时,如果注意,会看到 docker build 命令最后有一个 ... 表示当前目录,而 Dockerfile 就在当前目录,因此不少初学者以为 ...
- SQL IN查询优化
实际项目中有如下SQL, 发现效率很低,用时超过1分钟 select TaskID, StartDate = min(UpdateTime), EndDate = max(UpdateTime) fr ...
- git-代码同步至github
代码同步到github上 Last login: Wed Mar 27 13:53:06 on ttys001localhost:~ ligaijiang$ gitusage: git [--vers ...