文档章节

Java 异常处理

hibegin
 hibegin
发布于 2016/08/15 17:36
字数 793
阅读 6
收藏 0

完善的异常处理有利于程序稳定。不要不停的 catch 异常。


什么是异常??

定义: 异常是一个事件,它发生在程序的执行过程中,会破坏程序的正常执行 在一个错误发生会在一个方法时,创建一个Exception对象来处理来保证程序能继续执行下去。当异常发生时,JVM会搜索调用栈上的所有方法,若没有找到合适的异常处理方法,JVM将会终止程序,或者是终止当前线程。

try,catch,finally

  • try语句块来捕获异常,try必须提供一个处理这个异常 catch 或者是 finally
  • catch 编写异常处理代码
  • finally 将总是执行在 try 语句块结束时(不过线程在执行 try,catch 时被中断或者是杀掉,那么finally就可能不执行),固通常用于防止资源泄露。
FileInputStream in = null;
try {
	in = new FileInputStream("/home/xiaochun/1.tmp");
} catch(IOException e){
	// 进行异常处理
	e.printStackTrace();
} finally{
	if(in!=null){
		try {
		in.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

throws,throw

  • try-catch 是当前方法处理异常,有时候你无法直接处理异常,你可能无法预料到你的软件包的所有的需求。这样就不要进行异常的捕获,而是让调用该方法的来处理异常,那么你就需要使用 throw new Exception(); 并且在方法签名声明会发生异常(RuntimeException)。

Throwable

Throwable 是Error和Exception父类

Error

当动态链接失败或其他硬故障,JVM将会扔出一个错误,通常程序不会捕获或抛出异常,如 OutOfMemoryError,StackOverflowError

Exception

CheckedException

除开RunTimeException以及其子类,其他Exception都称为CheckedException,而这些异常都是需要强制捕获的。如 IOException,SQLException。

RuntimeException (UncheckedExeption)
  • 因为Java编程语言不是必须要捕获所有异常,这部分异常称为不检查异常(RuntimeException,Error 是他们的父类),比如 NullException,ArrayIndexOutOfBoundsException,NumberFormatException,个人感觉应该尽量避免在自己的代码中扔出 RuntimeExcepion 或者其子类,这样不会到在代码编写过程中忽略这些异常。异常一直抛到能处理的地方。除非是无论做什么都不能让程序继续执行下去。

异常的优点

  • 分离正常业务代码分离错误代码
  • 传递错误的异常调用堆栈,方便程序排错
  • 分组和区分错误类型

再说几点

  • 代码中不用粗暴的使用 e.printStackTrace(); 而是使用将其记录到日志里面
  • 使用 throw new SomeException(e) 而不是 throw new SomeException() 自己定义异常时不要丢掉异常链

参考资料 http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html

© 著作权归作者所有

共有 人打赏支持
hibegin

hibegin

粉丝 33
博文 9
码字总数 5952
作品 2
江北
Java学习系列文章:说说Java中的异常

在正常的程序设计中,程序异常处理是非常关键和重要的一部分。试想一个项目中没有一个好的异常处理,这个项目会怎么样? 什么是异常 异常其实是程序上的错误,包括程序逻辑错误和系统错误。比...

java高级架构牛人
06/29
0
0
通俗理解运行时异常和非运行时异常(一般异常) 

通俗理解运行时异常和非运行时异常(一般异常) 一,异常的概念 Java异常类层次结构图: Throwable: 有两个重要的子类:Exception(异常)和 Error(错误),二者都是 Java 异常处理的重要子...

DemonsI
09/13
0
0
异常的概念和Java异常体系结构

一、 异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误。本文主要讲授的是Java语言的异常处理。Java语言的异常处理框架, 是Java语言健壮性的一个重要体现。 Java把异常当作对象...

杭州_周陶忠
2013/09/10
0
0
第33节:Java面向对象中的异常

Java中的异常和错误 Java中的异常机制,更好地提升程序的健壮性 throwable为顶级,Error和Exception Error:虚拟机错误,内存溢出,线程死锁 Exception:RuntimeException为空指针异常,数组...

达叔小生
08/27
0
0
Java 复习 —— 异常处理

前言 异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点,从C开始,你也许已经知道如何用if...else...来控制异常了,也许是自发的,然而这种控制异常痛苦,同一个异常或者错误...

learn_more
2015/08/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

区块链入门教程以太坊源码分析ethdb源码分析

兄弟连区块链入门教程以太坊源码分析ethdb源码分析,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退...

兄弟连区块链入门教程
15分钟前
1
0
Eclipse下忽略掉node_modules目录相关配置

https://blog.csdn.net/yzf913214/article/details/72872523

张宏亮1982
16分钟前
1
0
在Python-dataframe中如何把出生日期转化为年龄?

我们在做数据挖掘项目或大数据竞赛时,如果个体是人的时候,获得的数据中可能有出生日期的Series,举个简单例子,比如这样的一些数: # -*- coding: utf-8 -*- import pandas as pd from ...

Mr_zebra
18分钟前
1
0
Android入门—activity生命周期

activity生命周期如下所示: onCreate()方法 创建activity时使用onStart()方法 当activity界面变为用户可见时调用onResume()方法 当activity界面获取到焦点时调用(界面按钮可点击,...

haoyuehong
20分钟前
1
0
使用C++ Builder 6编译产生错误

错误提示: [C++ Error] E2075 Incorrect project override option: Files\Borland\CBuilder6\lib\vcl60.csm[C++ Error] E2075 Incorrect project override option: Files\Borland\CBuilde......

simpower
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部