Java 异常知识点

  • Exception异常
Checked:继承java.lang.Exception类,可以预料到的,catch or specific 必须被显式地捕获或者传。
Unchecked:继承java.lang.RuntimeException(),不需要再方法上声明的异常。
比如: IllegalArgumentException extends RuntimeException
throw new Error(); 运行时异常
  • try-catch-finally
try catch 执行完,不管有没有异常,都会执行finally
finally 代码块中,最好不要return / throw,可能会隐藏try / catch的异常
运行时,虚拟机会复制finally语句块里面的内容在try catch里面,确保退出的时候一定会先执行
  • try-with-resource
try (Close close = new Close();
   AnotherCloseable close1 = new AnotherCloseable()){
}
离开try块时将自动调用close()方法,释放资源,这些资源必须实现 java.lang.AutoCloseable 接口
close1会先被关闭,如果有异常也会先抛出
如果两个close方法都会抛出异常,会将它们放在Suppressed数组里

https://stackoverflow.com/questions/47964866/how-to-rewrite-try-with-resources-with-two-resources-using-only-try-catch-finall

  • throw和throws关键字的区别
throw 用来抛出一个异常,在方法体内。语法格式为:throw 异常对象。
throws用来声明方法可能会抛出什么异常,在方法名后。语法格式为:throws 异常类型1...异常类型n。
  • Java异常处理的原则和技巧
避免过大的try块,不要把不会出现异常的代码放到try块里面,尽量保持一个try块对应一个或多个异常。
细化异常的类型,不要不管什么类型的异常都写成Excetpion。
catch块尽量保持一个块捕获一类异常,不要忽略捕获的异常,捕获到后要么处理,要么转译,要么重新抛出新类型的异常。
不要把自己能处理的异常抛给别人。
不要用try...catch参与控制程序流程,异常控制的根本目的是处理程序的非正常情况。

https://blog.csdn.net/top_code/article/details/39638467

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,156评论 19 139
  • 引言 在程序运行过程中(注意是运行阶段,程序可以通过编译),如果JVM检测出一个不可能执行的操作,就会出现运行时错...
    Steven1997阅读 2,516评论 1 6
  • 傻姑娘,睡的那么晚,谁还疼你呢?
    唐小茴阅读 43评论 0 0
  • 糖果小姐的糖阅读 133评论 0 0
  • 很多次夜晚不睡其实都是在等待你 期待今天不要过的太快 期待今天可以多喜欢你一分
    茶梧阅读 287评论 0 0