Java 异常处理
博客专区 > wzfz 的博客 > 博客详情
Java 异常处理
wzfz 发表于1年前
Java 异常处理
  • 发表于 1年前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

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

> 完善的异常处理有利于程序稳定。不要不停的 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

标签: exception
共有 人打赏支持
wzfz
粉丝 32
博文 8
码字总数 4938
作品 2
×
wzfz
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: