错误和异常有什么区别?CheckedException和的的的的的RuntimeException的有什么区别?
- 错误(错误),表示系统级的错误和程序不必处理的异常,是Java运行环境中的内部错误或者硬件问题。
- 内存不足 - 对于这种错误程序基本无能为力,除了退出别无选择,因为它是由Java的虚拟机抛出的。
- 异常(异常)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的.Exception又分为运行时异常,受检查异常。
- RuntimeException(运行时异常),表示无法让程序恢复的异常,导致的原因通常是因为执行了错误的操作,建议终止逻辑,因此,编译器不检查这些异常 .- CheckedException(受检查) ))异常),是表示程序可以处理的异常,也即表示程序可以修复(由程序自己接受异常并且做出处理),所以称之为受检查异常。
异常的使用的注意地方?
- 不要将异常处理用于正常的控制流(设计良好的 API 不应该强迫它的调用者为了正常的控制流而使用异常)。
- 对可以恢复的情况使用受检异常,对编程错误使用运行时异常。
- 避免不必要的使用受检异常(可以通过一些状态检测手段来避免异常的发生)。
- 优先使用标准的异常。
- 每个方法抛出的异常都要有文档。
- 保持异常的原子性
- 不要在 catch 中忽略掉捕获到的异常。
Throwable 类常用方法?
- getMessage() 方法:返回异常发生时的详细信息。
- getCause() 方法:获得导致当前 Throwable 异常的 Throwable 异常。
- getStackTrace() 方法:获得 Throwable 对象封装的异常信息。
- printStackTrace() 方法:在控制台上打印。
getMessage
public class ThrowableDemo {
public static void main(String[] args) throws Throwable {
try {
//调用方法
newException();
} catch (Throwable e) {
System.err.println(e);
// 返回此可抛出实例的详细信息字符串
System.out.println(e.getMessage());
}
}
public static void newException() throws Exception {
System.out.println("This is newException() function");
throw new Exception("new Exception...");
}
}
getCause
public class ThrowableDemo {
public static void main(String[] args) throws Throwable {
try {
newException();
} catch(Throwable e) {
System.err.println(e);
// returns null as the cause is nonexistent or unknown.
System.err.println("Cause = " + e.getCause());
}
}
public static void newException() throws Exception {
System.out.println("This is newException() function");
throw new Exception(&