JAVA项目常用异常处理汇总
在JAVA项目开发过程中,异常是无法避免的,但是合理地处理异常可以提高项目的健壮性和稳定性。本文将介绍 JAVA 项目中常用的异常类型及处理方法。
JAVA 中常见异常类型
编译时异常
编译时异常是指在编译阶段就可以被检查出来的异常。比如:
public class TestException {
public static void main(String[] args) {
FileInputStream input = new FileInputStream("a.txt"); //编译器会报出FileNotFoundException
}
}
运行时异常
运行时异常是指在运行时期间才发生的异常,比如:
public class TestException {
public static void main(String[] args) {
int[] arr = new int[]{1, 2, 3};
System.out.println(arr[3]); // 编译器不会报错,但是程序在运行时会抛出ArrayIndexOutOfBoundsException异常
}
}
错误
Error 是指程序运行时遇到的无法修复的异常,比如 OutOfMemoryError、StackOverflowError 等。
异常处理的方法
try-catch
try-catch 是 JAVA 中最基本的异常处理方法,它可以截获并处理指定的异常。示例代码如下:
public class TestException {
public static void main(String[] args) {
try {
int a = 10 / 0; // 会抛出 ArithmeticException 异常
} catch (ArithmeticException e) { // 捕获 ArithmeticException 异常
System.out.println("发生了算数异常!");
e.printStackTrace(); // 打印异常堆栈信息
}
}
}
throws
throws 关键字通常用于方法声明中,表示方法可能会抛出某种类型的异常。如果该方法确实抛出了异常,则需要调用它的方法要么使用 try-catch 块来捕获异常,要么使用 throws 关键字来将异常一层层抛出。示例代码如下:
public class TestException {
public static void main(String[] args) throws Exception {
testMethod();
}
public static void testMethod() throws Exception {
// do something
throw new Exception("抛出一个异常!");
}
}
finally
finally 关键字用于定义一个代码块,在 try-catch 语句块之后执行,无论是否抛出异常都会被执行。通常用于释放资源等操作。示例代码如下:
public class TestException {
public static void main(String[] args) {
FileInputStream input = null;
try {
input = new FileInputStream("a.txt");
// do something
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (input != null) {
try {
input.close(); // 关闭资源
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
示例说明
示例一
假设我们正在开发一个文件上传的功能,在上传文件前需要检查文件的格式是否符合要求。如果文件格式不正确,则需要抛出一个自定义的异常,提示文件格式不正确。
public class FileUploadException extends Exception {
// 自定义异常代码,用于在提示信息中显示
private int code;
public FileUploadException(String message, int code) {
super(message);
this.code = code;
}
public int getCode() {
return code;
}
}
public class FileUpload {
public void upload(File file) throws FileUploadException {
String filename = file.getName();
// 检查文件格式是否符合要求
if (!filename.endsWith(".txt")) {
throw new FileUploadException("文件格式不正确!", 1001);
}
// 如果文件格式正确,上传文件
// do something
}
}
示例二
假设我们正在开发一个计算器程序,它支持加、减、乘、除四种运算。当用户输入了一个无法进行除法计算的算式时,则需要抛出一个自定义的异常,提示“除数不能为零”。
public class DivideByZeroException extends Exception {
public DivideByZeroException(String message) {
super(message);
}
}
public class Calculator {
public int calculate(int num1, int num2, char operator) throws DivideByZeroException {
if (operator == '+') {
return num1 + num2;
} else if (operator == '-') {
return num1 - num2;
} else if (operator == '*') {
return num1 * num2;
} else if (operator == '/') {
if (num2 == 0) {
throw new DivideByZeroException("除数不能为零!");
}
return num1 / num2;
} else {
throw new IllegalArgumentException("不支持的运算符!");
}
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JAVA项目常用异常处理汇总 - Python技术站