Java Exception 和Error
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java Exception 和Error,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2188字,纯文字阅读大概需要4分钟。
内容图文
![Java Exception 和Error](/upload/InfoBanner/zyjiaocheng/1227/43e67d2e27be4c5bb1c3e9a62f79e86d.jpg)
(事先声明:该文章并非完全是我自己的产出,更多的是我个人在看到资料后通过理解并记录下来,作为自己阅读后的一个笔记;我现在试图对自己多年工作中的知识点做一个回顾,希望能融会贯通)
(此文参考<Java核心技术36讲>第二讲)
Exception & Error
Java的Exception和Error都继承了Throwable,且仅有Throwable类能被抛出(throw)和捕获(catch)。
Error是指正常情况下不会发现的,并且发现后无法恢复;此类错误不需要捕获,如:OutOfMemoryError,StackOverflowError,正常代码中无法对此类错误进行捕获。
Exception一搬是指程序运行是出现的意外情况 - 该事件发生是在意料之中的,且有可能恢复;可以进行捕获并相应处理。如: NumberFormatException, ValidateException(自定义). 异常又分为可检查(checked)和不检查(un-checked)。
1. Checked:在编译时会强制要求进行捕获,如在方法中有定义抛出的异常,则调用该方法时需要捕获该异常并进行处理。
public void methodA() throws ValidateException { // do thingthrownew ValidateException("Number exception"); } publicvoid handleException() { ExceptionHandling eh = new ExceptionHandling(); eh.methodA(); // <--- need catch the exception here }
2. Un-checked: 运行时出现的异常,如在处理对象时发现对象为空(NullPointException),或者ClassCastException,此类异常通常不会在编译时要求显式处理。而是根据代码实现者的具体实现来捕获。
Exception处理 - try-with-resources
基本的语法有 try-catch-finally, throw new xxxException("Exception message"), throws xxxException (方法定义).
Java7之后,引入了try-with-resources: 当一个外部资源实现了Autocloseable / Closeable接口时,可以将原来复杂的try-catch-finally-try-catch替换成自动关闭。
旧的实现:
public void readFile(String fileName) { FileInputStream is = null; try { is = new FileInputStream(new File(fileName)); log.info("File content:\n {}", is.read()); } catch(IOException e) { thrownew RuntimeException(e.getMessage, e); } finally { if(is != null) { try { is.close(); } catch (IOException e1) { thrownew RuntimeException(e1.getMessage, e1); } } } }
新实现:
public void readFile(String fileName) { try (FileInputStream is = new FileinputStream(new File(fileName))) { log.info("File content:\n {}", is.read()); } catch (IOException e) { thrownew RuntimeException(e.getmessage, e); } }
Exception处理 - Multiple exception
try { // do sth } catch (IOException | ValidateException) { // handle exception here }
日常使用建议
在日常编写代码过程中,处理异常应该尽量遵循一些好的经验。
尽可能捕获具体的异常,而不通用异常: 如Catch(NumberFormatException e), 而不是Catch(Exception e)
不要吞掉异常(Swallow Exception),应该输出有用的信息。
尽早抛出异常,比如在正常代码里,如果一行代码包含多个对象且出现NPE时, 很难判断是哪个对象为空,因此可以在有可能出现对象为空且该对应一定不能为空时增加测试条件:
Preconditions.checkNotNull(neme, "neme can‘t be null");
原文:https://www.cnblogs.com/ddez/p/10633979.html
内容总结
以上是互联网集市为您收集整理的Java Exception 和Error全部内容,希望文章能够帮你解决Java Exception 和Error所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。