CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f
参赛话题:Java学习记录
话题描述:可以记录一下平时学习Java中的一些知识点、心得、例题、常见的问题解决
创作模板:
目录
一、前言
二、java异常类型
三、需要掌握的三种异常类型
一、前言
- 学习概述:简单的介绍一下本篇文章要讲解的Java知识点
- 学习目标:读者读完这篇文章之后,你希望他掌握你讲解的哪些重要的知识点
二、java异常类型
1. 如何选择异常
从个人开发经验来看,如果在一个应用中,需要开发一个方法(如某个功能的service方法),这个方法如果中间可能出现异常,那么你需要考虑这个异常出现之后是否调用者可以处理,并且你是否希望调用者进行处理。
如果调用者可以处理,并且你也希望调用者进行处理,那么就要抛出受检异常,提醒调用者在使用你的方法时,考虑到如果抛出异常时如果进行处理。
相似的,如果在写某个方法时,你认为这是个偶然异常,理论上说,你觉得运行时可能会碰到什么问题,而这些问题也许不是必然发生的,也不需要调用者显示的通过异常来判断业务流程操作的,那么这时就可以使用一个RuntimeException这样的非受检异常。
2. 应该选用哪种异常
RuntimeException异常和受检异常之间的区别就是:是否强制要求调用者必须处理此异常,如果强制要求调用者必须进行处理,那么就使用受检异常,否则就选择非受检异常(RuntimeException)。一般来讲,如果没有特殊的要求,我们建议使用RuntimeException异常。
3. 什么时候才需要抛异常
首先我们需要了解一个问题,什么时候才需要抛异常?异常的设计是方便给开发者使用的,但不是乱用的。
其实这个问题很简单,如果你觉得某些”问题”解决不了了,那么你就可以抛出异常了。比如,你在写一个service,其中在写到某段代码处,你发现可能会产生问题,那么就请抛出异常吧,相信我,你此时抛出异常将是一个最佳时机。
三、需要掌握的三种异常类型
1. 非运行时异常
2. 运行时异常
(1)ArrayIndexOutOfBoudsException(数组下标越界)
(2)NullPointerException(空指针异常)
(3)ArithmeticException (算术异常)
(4)MissingResourceException(丢失资源)
(5)ClassNotFoundException(找不到类)
这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。一般都是由于程序逻辑错误引起的,应该从逻辑角度尽可能避免这些异常的发生。
3. 错误ERROR
(1)由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作无关
(2)Java虚拟机运行错误,当jvm不再有继续执行操作所需的内存资源时,将出OutOfMemoryError。jvm会选择线程终止。
(3)jvm试图执行应用时,如类定义错误(NoClassDefFoundError)、连接错误(LinkageError)。这些错误是不可查的,因为它们在应用程序的控制和处理能力之外,而且绝大 多数是程序运行是不允许出现的状况。
样例:
package com.Exception.demo01;
public class Demo01 {
public static void main(String[] args) {
int a = 1;
int b = 0;
try {//try 监控区域
System.out.println(a/b);
}catch(ArithmeticException e){// catch 捕获异常
System.out.println("程序出现错误,变量b不能为0");
}finally {
System.out.println("finally");
}
//finally 可以不要fanally 假设IO、资源、关闭!
}
}
上面模板的几个模块,使用时可以根据实际情况而定,没有必要完全一致。
CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f



