JAVA---异常处理
2017-08-27 20:47
357 查看
异常处理
异常:程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件
(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象
![](https://oscdn.geek-share.com/Uploads/Images/Content/202012/09/9b360727f0c4f00844021085f6d9e47b)
Throwable是所有异常的根
Error是系统错误,程序员无法处理这些异常
Exception是程序员可以捕获并且处理的异常
RuntimeException的子类异常是你可以处理可以不处理的异常
凡是继承自Exception但又不是RuntimeException子类的异常我们都必须捕获并且处理
在try里面代码,会被认为是有可能失败的,既然有可能失败,那么你的n一开始没有被初始化,后面输出当然是错误的
异常的处理机制
当Java程序运行时出现问题时,系统会自动检测到该错误,并且立即生成一个与该错误相对应的异常对象
然后把该异常对象提交给Java虚拟机,Java虚拟机会自动寻找相应的处理代码来执行这个异常如果没有找到,则由Java虚拟机做一些简单的处理之后,程序被强行终止!
程序员可以编写自己的代码来捕获可能出现的异常,并且编写代码来处理相应的异常
还有一种,try...catch...finally...无论try中的代码是否抛出异常,finally中的代码都会得到执行
finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态作出统一的管理,通常,finally语句可以进行资源清理的工作上面,如关闭打开的文件,删除临时文件等。
自定义异常
throw是用来抛出异常,要抛出的异常必须是Throwable子类
异常:程序在运行过程中发生由于硬件设备问题、软件设计错误等导致的程序异常事件
(在Java等面向对象的编程语言中)异常本身是一个对象,产生异常就是产生了一个异常对象
public class abnormal { public static void main(String[]args) { try{ System.out.println(6/0); } catch(Exception e) { e.printStackTrace(); } } }
Throwable是所有异常的根
Error是系统错误,程序员无法处理这些异常
Exception是程序员可以捕获并且处理的异常
RuntimeException的子类异常是你可以处理可以不处理的异常
凡是继承自Exception但又不是RuntimeException子类的异常我们都必须捕获并且处理
public class abnormal { public static void main(String[]args) { int n; try{ n=1; System.out.println(n); } catch(Exception e) { e.printStackTrace(); } System.out.println(n); } }以上代码是有错的,The local variable n may not have been initialized
在try里面代码,会被认为是有可能失败的,既然有可能失败,那么你的n一开始没有被初始化,后面输出当然是错误的
异常的处理机制
当Java程序运行时出现问题时,系统会自动检测到该错误,并且立即生成一个与该错误相对应的异常对象
然后把该异常对象提交给Java虚拟机,Java虚拟机会自动寻找相应的处理代码来执行这个异常如果没有找到,则由Java虚拟机做一些简单的处理之后,程序被强行终止!
程序员可以编写自己的代码来捕获可能出现的异常,并且编写代码来处理相应的异常
import java.io.*; public class abnormal { public static void main(String[]args)throws Exception { throw new IOException();//必须捕获处理的异常 } }一般我们采用try...catch...也可以使用这种方法,throws Exception,这个方法有可能抛出异常,我们不进行处理,但是我们把这个异常抛给被调用的对象处理
还有一种,try...catch...finally...无论try中的代码是否抛出异常,finally中的代码都会得到执行
finally语句为异常处理提供一个统一的出口,使得在控制流程转到程序的其他部分以前,能够对程序的状态作出统一的管理,通常,finally语句可以进行资源清理的工作上面,如关闭打开的文件,删除临时文件等。
自定义异常
throw是用来抛出异常,要抛出的异常必须是Throwable子类
import java.io.*; class B extends Exception { public B() { System.out.println(123); } } class A { void fun1()throws B { throw new B(); } } public class abnormal { public static void main(String[]args) { A aa=new A(); try{ aa.fun1(); } catch(Exception e) { e.printStackTrace(); } } }
相关文章推荐
- com.android.build.api.transform.TransformException: java.util.zip.ZipException:异常处理
- 编写高质量代码改善java程序的151个建议——[110-117]异常及Web项目中异常处理
- java基础系列(八)--异常和处理异常
- java的异常处理机制详解
- 用poi处理excel文件异常:java.io.IOException: Invalid header signature; read 2338042707334752323
- java异常处理
- JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
- Java RuntimeException异常处理汇总
- Java异常处理
- 有效处理Java异常三原则
- Java异常处理和设计
- Atititjs javascript异常处理机制与java异常的转换.js exception process
- java异常处理(一)
- Java 异常处理
- java异常处理
- Android 异常处理:java.lang.IllegalArgumentException(...contains a path separator)
- java异常处理
- Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- Java异常处理机制【转载】
- java异常处理机制