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之旅_高级教程_序列化
摘自 :http://www.runoob.com/java/java-serialization.html Java序列化 Java提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字 ...
- 批量增删改"_bulk"
除了delete以外,每个操作需要两个json字符串,语法如下:{"action":{"metadata"}}{"data"}bulk ap ...
- 运行Maven工程中修改tomcat端口
Maven 运行:clean tomcat7:run 若需要修改端口,则用clean -Dmaven.tomcat.port=8082 tomcat7:run
- navicat如何导出mysql数据表结构
我们在创建数据库时会对字段进行设置,比如类型.长度等,如果字段多的话一个个设置非常麻烦,可以从其他地方已有的表导入数据表结构,怎么操作呢?我们拿navicat导出mysql数据表结构为例: 1.点击“ ...
- 安装与破解PyCharm专业版
安装与破解PyCharm专业版(有两种方法) 一.安装与破解PyCharm专业版 1.安装pycharm(建议安装python3) 这是网址:(https://www.jetbrains.com/py ...
- 遍历map并判断key的值
jsp页面:三种方法输出 <c:forEach items="${myMap}" var="mapV" varStatus="status&qu ...
- python-类属性和对象属性(转)
class People(object): # 类属性是指定义在类的内部而且在方法的外部的属性 money = 10000 def __init__(self,name,age,gender=1): ...
- [css]table的拆分
https://blog.csdn.net/qq_35415600/article/details/70237433 <body> <table border="1&quo ...
- Eclipse中git上如何把自己的分支保存到远端
1 Team——>remote——>push 2 next 3 选择自己的分支,然后点击 Add Spec 4 查看是否是自己的分支——>自己的分支,然后Finish PS ...
- 【LeetCode每天一题】Rotate Image(旋转矩阵)
You are given an n x n 2D matrix representing an image.Rotate the image by 90 degrees (clockwise). N ...