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语句肯定是不陌生的了.但是好多 ...
随机推荐
- notify,wait,synchronized实现线程间通知
wait阻塞线程释放锁:notify使wait所在的线程被唤醒在次获得锁,并执行,但要等到notify所在的线程代码全部执行后! 示例代码如下: package com.vhbi.service.im ...
- 重读《深入理解Java虚拟机》七、探究Java内存模型
1.计算机物理内存结构(物理内存结构决定了虚拟机内存结构) 由于处理器和主存储设备在运算速度上不上同一个数量级上,因此处理器和主存储器之间不得不增设一层高速缓存,将部分在主存储设备的运算放在高速缓存内 ...
- WPF 参数在Page见传递
void goButton_Click(object sender, RoutedEventArgs e) { this.NavigationService.Navigate(new ContentP ...
- SpringBoot-@value自定义参数
自定义参数 配置文件值 name=itmayiedu.com 代码: @Value("${name}") private String name; @Res ...
- UVA 1379 - Pitcher Rotation(DP + 贪心)
题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=4125" rel="nofo ...
- NYOJ 开心的小明
#include<iostream> #include<stdio.h> #include<string.h> #include<queue> #inc ...
- vue【指令】
<div class="m-conbox"> <div v-text="html"></div> <div>{{ ...
- vue 常用问题
缺少style-loader 或者 stylus-loader 等问题 在文件[package.json]分支:[devDependencies]添加 版本号: "stylus": ...
- Scala数据类型的继承结构
Scala中,所有的值都是类对象,而所有的类,包括值类型,都最终继承自一个统一的根类型Any.统一类型,是Scala的又一大特点.更特别的是,Scala中还定义了几个底层类(Bottom Class) ...
- Linux命令:xargs命令详解,xargs与管道的区别
阅读目录 为什么要用xargs,问题的来源 xargs是什么,与管道有什么不同 xargs的一些有用的选项 回到顶部 为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人 ...