工作记录----工作中各个方法处理检查型异常的常见处理方案----小白也能看懂--12.13
2023-12-13 22:26:55
当谈论Java中的异常和错误时,有一些核心概念值得了解:
-
异常(Exceptions):
- 异常指的是程序在运行时遇到的问题,可能会导致程序的异常行为或中断程序的正常流程。
- Java中的异常分为两类:可检查异常(Checked Exceptions)和不可检查异常(Unchecked Exceptions)。
- 可检查异常是在编译时强制处理的异常,通常需要使用
try-catch
块或在方法上使用throws
关键字进行处理,如IOException
。 - 不可检查异常是运行时出现的异常,通常继承自
RuntimeException
,例如NullPointerException
、ArrayIndexOutOfBoundsException
等。
-
错误(Errors):
- 错误指的是Java虚拟机(JVM)无法处理的严重问题,通常导致程序无法继续运行。
- 错误是指导致应用程序中断或失败的问题,而不是应用程序代码错误导致的异常。
- 例如
OutOfMemoryError
表示内存不足,StackOverflowError
表示堆栈溢出等。
-
异常处理(Exception Handling):
- 使用
try-catch-finally
语句块可以捕获和处理异常。 try
代码块中包含可能会引发异常的代码,catch
用于捕获和处理异常,finally
用于执行无论异常是否发生都需要执行的代码块。- 可以使用多个
catch
块捕获不同类型的异常,确保适当地处理异常情况。
- 使用
-
异常层级结构(Exception Hierarchy):
- Java中的异常以层级结构组织,
Throwable
是所有异常和错误的根类。 Throwable
分为Error
和Exception
两个子类,Exception
又分为RuntimeException
和其他受检查异常。- 异常类之间有继承关系,这使得可以通过多态性处理异常。
- Java中的异常以层级结构组织,
-
异常处理最佳实践:
- 对于可检查异常,考虑使用
try-catch
或throws
在合适的地方处理异常。 - 对于不可检查异常,通常是由程序错误导致的,应该修复代码来避免这些错误的发生。
- 对于可检查异常,考虑使用
当处理异常时,可以使用 try-catch 语句来捕获和处理异常,下面是一个简单的示例:
public class ExceptionHandlingExample {
public static void main(String[] args) {
try {
// 可能抛出异常的代码块
int result = divide(10, 0);
System.out.println("Result: " + result); // 这行代码不会被执行
} catch (ArithmeticException e) {
// 捕获并处理异常
System.out.println("Error: Division by zero");
e.printStackTrace(); // 打印异常信息
} finally {
// finally块中的代码无论异常是否发生都会执行
System.out.println("Finally block");
}
}
// 一个简单的除法方法,可能抛出ArithmeticException
private static int divide(int a, int b) {
return a / b;
}
}
e.printStackTrace();啥意思?
e.printStackTrace() 是一个 Java 中常用的方法,它用于在控制台打印异常信息。在捕获到异常后,使用 printStackTrace() 可以将异常的详细信息打印出来,包括异常类型、出错的代码行数、方法调用链等,有助于排查问题和定位错误。
这个方法通常在异常处理块中使用,以便开发者能够更好地了解出现异常的原因及其位置。
各个方法处理检查型异常的常见处理方案
- 捕获并处理异常: 使用
try-catch
块捕获异常并处理它。例如:
try {
// 可能会抛出异常的代码
FileReader file = new FileReader("example.txt");
// 读取文件内容等操作
} catch (FileNotFoundException e) {
// 处理文件未找到异常
e.printStackTrace();
}
- 向上抛出异常: 在方法签名中声明方法可能抛出的异常,并将它传播到调用该方法的地方。例如:
public void readFile() throws FileNotFoundException {
FileReader file = new FileReader("example.txt");
// 读取文件内容等操作
}
- 使用 finally 块: 无论是否发生异常,
finally
块中的代码都会执行。通常用于释放资源或执行必要的清理工作。例如:
FileReader file = null;
try {
file = new FileReader("example.txt");
// 读取文件内容等操作
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (file != null) {
try {
file.close(); // 关闭文件流
} catch (IOException e) {
e.printStackTrace();
}
}
}
try-catch -finally 那个关键字可以省略?
在处理异常时,finally 块是可选的。你可以使用 try-catch 块来捕获异常,并选择性地在必要时使用 finally 块来执行清理或资源释放操作。如果没有需要在异常发生或捕获后执行的特定代码,可以省略 finally 块。
try {
FileReader file = new FileReader("example.txt");
// 读取文件内容等操作
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 其他代码
在这种情况下,如果异常被捕获并处理了,程序会继续执行 catch 块后面的代码或者直接跳到后续代码执行,不会执行 finally 块内的内容
文章来源:https://blog.csdn.net/qq_51711443/article/details/134973980
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!