面试题Java中的异常体系,java 什么时候使用try catch

相信我们或多或少遇到或者听过有时候在代码里面明明try catch了异常,但是程序报错却没有捕获到错误。这个原因其实就涉及的异常体系了。我们先看看一个例子:

public class ExceptionText {
public static void main(String[] args) throws Throwable{
try{
throw new Throwable();
}catch (Exception e) {
System.out.println("new Throwable() is success.");
}
}
}

下图试运行结果

面试题Java中的异常体系,java 什么时候使用try catch打印信息组成:

所处线程名字、异常类名、异常信息、异常堆栈、异常的源码,包名,类名,方法名,行数

  • 常见方法:

getMessage : 错误信息的字符串解释

getCause:返回异常产生的原因,一般是原始异常如果不知道原因返回null

printStackTrace:打印异常出现的位置或原因,不建议使用,该方法会产生的字符串记录的是堆栈信息,太长太多,内存被填满,建议使用logger输出到日志文件

java 什么时候使用try catch(面试题Java中的异常体系)(6)

toString:返回String格式的Throwable信息,此信息包括Throwable的名字和本地化信息

initCause:初始化原始异常

PrintStream和PrintWriter作为产生实现重载,这样就能实现打印栈轨迹到文件或流中

常见异常:

NullPointException:空指针异常,对象是null时会出,在调用传入对象时尽量判断是否为nullldk8里面可以用Optiona对象来避免

IndexOutOfBoundsException:数组下标越界,数组的下标超过了最大值时会抛出,在选代循环时检查下标是否越界

NumberFormatException:数字类型转化异常,将非数字类型转成数字类型,将类型转化的代码catch住

ClassCastException:类型转换异常,发生在强转时,将不同类型转成同一类型,尽量少用强转,或用 instanceof(判断继承中子类的实例是否是父类的实现)做类型判断,或多用泛型

FileNotFoundException:找不到指定文件,文件路径错误或文件不存在,可能用了绝对路径检查文件是否存在,路径是否写错,多用相对路径

ClassNotFoundException:在classpath中找不到引用的类缺乏引用当前类的jar或没有设置classpath或 jar损坏,找到jar并放入classpath中或检查jar是否损坏

OutOfMemoryError:内存溢出异常,产生对象太多,内存不够>不要在循环体重创建大量对象,或对象及时回收,增大初始化堆:-Xms 增加最大值:-Xmx

NoClassDefFoundError:找不到相应的类错误,缺乏当前引用类的jar或jar版本不对->找到jar并放入 classpath中或找到合适的版本

ConcurrentModificationException:并发修改异常,在集合迭代时修改里面的元素->在选代时不要修改集合或用并发集合做遍历(如:ConcurrentHashMap)

NoSuchMethodError:类里找不到相应的方法,一般是iar版本不对,当前引用的jar版本中没有这个方法->检查jar版本是否正确

UnsupportedClassVersionError:版本不支持错误,编译dass的idk和运行时候的idk版本不一致或比较高>将低饭本换成高版本

StackOverflowError:栈溢出错误,一般是函数的死循环,或递归调用无法退出->检查死循环的代码,或让递归有退出值,或加大栈初始化参数

,

小奇兔文章系用户自行上传分享,仅供网友学习交流。如作品内容涉及版权问题,请及时与小奇兔联系,我们将在第一时间删除。
(0)

相关推荐

十城网爱发号阅读号银行卡农夫网苏普网 南趣百科酷瑞百科知道百科酷知号茄考网情感文案生肖号猫咪日记百科村趣经验网 华泰网奔流网门之家主打网智云站长资源网电脑知识网小奇兔电脑报游戏攻略西晨网
分享本页
返回顶部