前言
==
- java中有异常抛出、既然是异常为什么还要分那么多种情况
问题描述
====
- 我的程序无缘无故会既不报错也不执行。不知所踪
public static void main(String[] args) throws InterruptedException {
String msg = "nihao";
try {
helloOne(msg);
} catch (Exception e) {
}
System.out.println("大家好");
}
private static void helloOne(String msg) {
String substring = String.valueOf(msg.charAt(5));
System.out.println("nihao:" substring);
}
- 关于Exception处理的问题,笔者是轻身经历过的因为自己乱用异常并且乱捕获导致自己程序变得神出鬼没。但是涉及到核心业务代码这里无法贴出代码。上面是自己的一个演示代码
- 当在主程序中调用其他方法时。刚开始担心别人的方法不稳定所以加上的异常。这样是为了保证自己的业务不会因此奔溃。但是不知道当时咋想的在catch里面没有加上日志。这里化个重点凡是捕获的异常必须要加上处理最起码需要日志
问题解决
====
- 虽然异常处理是个小问题但是也是对原理的不了解导致的。或者说是不规范导致的,捕获了异常却不做任何处理这本身就是一种不规范。
- 有关异常处理还有一种情况是在捕获的时候需要先捕获小异常然后再大异常
public static void main(String[] args) throws InterruptedException {
String msg = "nihao";
try {
helloOne(msg);
} catch (Exception e) {
System.out.println("eeee");
} catch (NullPointerException e) {
System.out.println("null");
e.printStackTrace();
}
System.out.println("大家好");
}
- 上面这段代码在编译期间就无法通过。因为先捕获了大异常这样就会造成小异常永远捕获不到。这样就会失去捕获的意义。
总结
==
什么是异常
- 异常是指在程序执行期间有些事无法通过实现代码层面上做出的判断。依赖于数据产生的可能情况
分类
--
Throwable
是异常的父类,所有的异常都是从这里衍生来的。其下有两个主力Exception
Error
。error
是编译期间就能发现的问题。是JVM在处理的事情
异常名称
作用
NullPointerException
空指针异常
ClassCastException
class转换异常
IndexOutOfBoundsException
数组越界异常
IllegalArgumentException
参数不合法异常
ArrayStoreException
数组异常
处理异常
- 上面我在演示中是通过
try
、catch
实现异常的捕获的。但是正确的姿势应该是try
catch
finally
三者完成异常捕获并保证备胎 操作的执行
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!