Java异常信息的报出

Java异常的报警它是一个堆栈报出的过程。
着重注意它的异常类型,以及报错是在第几行。
其次对于异常,如果你写了try catch ,此时如果没有抛出异常的话,就会默认被内部处理,流程正常走又不报错,你就得不到你想要的数据了。

try {
     System.out.println(1/0);
} catch (final Exception e) {
    log.error("ERROR", "Error found: ", e);
    log.error("ERROR", "Error found: " + e.getMessage());
}

它的结果是:

2018-11-09 11:46:34,834 main ERROR com.lewis.test.TestLewis - Message: ERROR; Description: Error found: 
java.lang.ArithmeticException: / by zero
        at com.lewis.test.TestLewis.main(TestLewis.java:46)
2018-11-09 11:46:34,837 main ERROR com.lewis.test.TestLewis - Message: ERROR; Description: Error found: / by zer

第一个打印了完整的堆栈信息
第二个只是打印出了异常的具体信息,既没有异常类名,也没有堆栈信息。

实际上异常抛出的一大堆信息是堆栈在存取的

每行信息,每个caused by都是一个堆栈
我们可以通过

StackTraceElement[] stackTraceElements=e.getStackTrace();

获取这整个完整的堆栈信息。
然后

stackTraceElements[0].toString()

这就是第0行的数据,一般就是那个第几行第几行出了问题的那个
你可以自己想返回几行就返回几行。

异常出现的时候,不抛出,程序就默认内部处理了。因此记得写 throws Exception

throwable 和 exception 的区别

在 Java 编程中,Throwable 和 Exception 都是与错误和异常处理相关的类,但它们在一些方面有不同的作用和用法。

Throwable:

Throwable 是 Java 中所有错误和异常的基类。它分为两个主要子类:Error 和 Exception。
Error 表示严重的问题,通常是由于虚拟机无法恢复的问题,比如 OutOfMemoryError、StackOverflowError 等。
Exception 表示可以被程序处理的异常情况,它又分为可检查异常(checked exceptions)和不可检查异常(unchecked exceptions)。
Exception:

Exception 是 Throwable 的一个子类,它表示程序在正常运行过程中遇到的可处理的异常情况。
可检查异常(checked exceptions)是指在方法签名中声明并强制要求调用方进行处理的异常,比如 IOException、SQLException 等。
不可检查异常(unchecked exceptions)是指继承自 RuntimeException 的异常,通常表示程序逻辑错误或运行时错误,例如 NullPointerException、ArrayIndexOutOfBoundsException 等。这些异常通常不需要在方法签名中显式声明或捕获。
总的来说,Throwable 是异常和错误的根类,Exception 是可以被程序处理的异常类,而 Error 则表示虚拟机无法恢复的严重问题。Exception 又分为可检查异常和不可检查异常。通常,你应该在你的程序中通过合适的异常处理机制来捕获和处理 Exception 类的子类,特别是可检查异常,以提高代码的健壮性和可维护性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值