做网站需要哪些参考文献模板建站是什么意思
news/
2025/9/30 18:09:28/
文章来源:
做网站需要哪些参考文献,模板建站是什么意思,媒体软文发布平台,计算机就业岗位有哪些填坑#xff0c;整理下Java的常用异常。正确使用异常在实际编码中非常重要#xff0c;但面试中的意义相对较小#xff0c;因为对异常的理解和应用很难通过几句话或几行代码考查出来#xff0c;不过我们至少应答出三点#xff1a;异常类的继承关系、常用异常类、常用异常类…填坑整理下Java的常用异常。正确使用异常在实际编码中非常重要但面试中的意义相对较小因为对异常的理解和应用很难通过几句话或几行代码考查出来不过我们至少应答出三点异常类的继承关系、常用异常类、常用异常类的使用场景下文将围绕这三点介绍。异常类的继承关系Java中所有异常都继承自Throwable类(一个完整可用的类)。整体上分为Error、Exception两个大类Exception大类又分为UncheckedException(继承于RuntimeException)和CheckedException(继承于Exception但不继承于RuntimeException)。为了帮助理解我在每个类别下都给出了两个常用子类如Error包括OutOfMemoryError、AssertionError等UncheckedException包括NullPointerException、IllegalArgumentExceptionCheckedException包括IOException、InterruptedException。面试画异常类的继承关系时要求能清楚的说明几个类别并分类别举几个常用的异常类。常用异常类下面分类别扩充一下常用的异常类字典序排序类别常用异常类ErrorAssertionError、OutOfMemoryError、StackOverflowErrorUncheckedExceptionAlreadyBoundException、ClassCastException、ConcurrentModificationException、IllegalArgumentException、IllegalStateException、IndexOutOfBoundsException、JSONException、NullPointerException、SecurityException、UnsupportedOperationExceptionCheckedExceptionClassNotFoundException、CloneNotSupportedException、FileAlreadyExistsException、FileNotFoundException、InterruptedException、IOException、SQLException、TimeoutException、UnknownHostException需要着重理解的是UncheckedException。上述异常类都是很常见的但其中几个异常类设计的不好需要注意ConcurrentModificationException实现“快速失败”的机制但实际上“快速失败”机制本身仍然无法保证并发环境下安全性参考源码|从源码分析非线程安全集合类的不安全迭代器。因此虽然该异常很常见不要去依赖它。JSONException常见于json字符串解析失败的情况但遮蔽了大量的失败细节往往很难根据该异常作出处理。如果项目中大量使用json建议使用第三方的json解析库如gson等。UnsupportedOperationException这是一种编码上的恶性妥协经常在抽象类的成员方法中被用户主动抛出表示该方法还未实现等但由于是UncheckedException运行期才能够发现完全无益于编码期间的安全性。自己编码时尽量不要使用。SQLException与JSONException原因相似但其遮蔽的失败细节范围更广。同时SQLException还是一个CheckedException在不能解决问题的情况下又使代码变的臃肿不堪。建议同。如果做Java Web开发热门的ORM库都能解决上述问题。常用异常类的使用场景常用异常还是有点多下面分别讲解上述三个类别的使用场景并在每个类别中选一个例子进行讲解。ErrorError通常描述了系统级的错误并且程序猿无法主动处理——当然系统级错误也有可能由代码间接导致这不在我们的讨论范围内。发生系统级错误的时候系统环境已经不健康了因此Error不强制捕获或声明也就是不强制处理一般情况下只需要把异常信息记录下来(如果能记下当时的系统快照更好)。OutOfMemoryError当可用内存不足时会由JVM抛出OutOfMemoryError。一般由三种原因导致堆设置过小不满足正常的内存需求代码中存在内存泄露占用了大量内存而不能被回收选择的GC算法与某些极端的应用场景不匹配内存碎片过多没有足够大的连续空间分配给对象JVM抛出OutOfMemoryError前会尝试进行一次Full GC如果GC后可用内存还是不足才会抛出OutOfMemoryError。因此这时程序猿必然无法主动处理这一问题只能等程序崩溃后再去查证原因。查证OutOfMemoryError的技巧足以单开一篇文章了本文不作深入。UncheckedException严格来说Error也可以被划归UncheckedException但我们更习惯用UncheckedException描述运行期发生通常由于代码问题直接引起的程序相关的错误并且程序猿无法主动处理。注意区分系统级错误都应该用Error描述。UncheckedException发生的大部分情况是代码写挫了因此UncheckedException也不强制捕获或声明也就是不强制处理一般情况下记下日志即可。不同的是如果可能要保证UncheckedException是可控的(在异常被动抛出前检查并主动抛出)。JSONException就是不可控的。NullPointerExceptionNullPointerException是最常见的UncheckedException。如果在一个空指针上引用方法或变量等则运行期会抛出NullPointerException。空指针让程序变的不可控如果任由空指针在程序运行期随意传递、使用我们将无法确定程序的行为也无法确定捕获NullPointerException时程序所处的状态。解决这一问题的方法很简单尽早检查并主动抛出异常单独、提前处理边界条件尽量不使用null表示状态特别是在集合中前两条原则通用于大部分UncheckedException可参考String#toLowerCase()的例子。第三条原则需要在代码的健壮与简洁之间做出权衡优先保证简洁清晰需要健壮再去健壮。CheckedException猴子对CheckedException的理解不到位如果各位有更好的理解希望能交流一下。以下讲猴子“不到位”的理解。CheckedException描述了外部环境导致的不太严重的错误程序猿应该主动处理。注意与系统级错误区分系统级错误通常是不可恢复的。因此CheckedException强制捕获或声明程序猿必须处理。记录日志包装后再次抛出在方法签名中声明是三种最常见的做法。同UncheckedException一样CheckedException也要保证是可控的。对CheckedException的可控性要求更高不仅要主动检查还要在捕获到异常时作出合适的处理。不过猴子认为大量CheckedException的存在就是个错误。比如FileAlreadyExistsException更应该由用户主动检查发现而不应该依赖于异常。对于可以处理的异常本质上相当于控制流问题用异常去表达反而让控制流变模糊。不过有时候猴子写小项目也会为了简化代码直接将相关异常声明在方法签名中并一路声明干到main方法。恩everything is a trade-off。IOException产生IOException的原因非常多但很多时候我们并不关心细节原因因为文件系统是一个不太可控的因素这时我们可以以IOException为粒度处理某些需要关心细节的异常情况则应使用IOException的子类以分情况处理。前面总结的FileAlreadyExistsException、FileNotFoundException、UnknownHostException等都是IOException的子类。这三种异常恰好都是可以处理的。挖坑InterruptedException也相当重要后面要专门写一篇来整理。总结实际的编码工作中我们应正确的使用异常表达代码设计并尽可能使用JDK提供的异常类。JDK内置了非常多的异常类我们只需要掌握一些常用的异常类然后举一反三。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/923122.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!