Java中的异常类型及区别?
下文笔者讲述java中常见的异常类型简介及区别,如下所示
Java中异常类型
检查型异常(checked exception)
检查异常也称为“编译时异常”
Java认为Checked异常都是可以被处理的异常
所以Java程序必须显式处理 Checked 异常
如果程序没有处理 Checked 异常
该程序在编译时就会发生错误无法编译
非检查型异常(unchecked exception)
非检查型异常又称运行时异常
运行时异常都是RuntimeException类及其子类异常
如
NullPointerException、IndexOutOfBoundsException 等
这些异常是不检查异常
程序中可以选择捕获处理
也可以不处理
这些异常一般由程序逻辑错误引起
程序应该从逻辑角度尽可能避免这类异常的发生。
检查类异常的处理方式
方式1: 直接向上抛出 方式2: 使用try catch捕捉
直接向上抛出
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class TestClass {
public static void main(String[] args) {
try {
TestClass testClass = new TestClass();
String str = testClass.getFile("D:/test.txt");
System.out.println(str);
} catch (IOException e) {
e.printStackTrace();
}
}
private String getFile(String filePath) throws IOException {
File file = new File(filePath);
return FileUtils.readFileToString(file, StandardCharsets.UTF_8);
}
}
使用 try-catch 语句进行处理
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class TestClass {
public static void main(String[] args) {
Demo testClass = new TestClass();
TestClass str = testClass.getFile("D:/test.txt");
System.out.println(str);
}
private String getFile(String filePath) {
try {
File file = new File(filePath);
return FileUtils.readFileToString(file, StandardCharsets.UTF_8);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
检查型异常和非检查型异常的区别
1.非检查异常不需要在方法或者是构造函数上声明
方法或构造函数的运行可能会抛出这样的异常
2.非检查异常可以传播到方法或构造函数的外面
3.检查型异常必须要用 throws 语句在方法或者是构造函数上进行声明
或使用 try-catch 语句进行捕获并处理
否则程序无法正常编译。
Java常见的异常类型
NullPointerException
空指针异常
操作一个null对象的方法或属性时触发
OutOfMemoryError
内存异常异常,这不是程序能控制的
指要分配的对象的内存超出了当前最大的内存堆
需要调整堆内存大小(-Xmx)以及优化才程序
IOException
IO
即:input,output,我们在读写磁盘文件
网络内容的时候会发生的一种异常
这种异常是受检查的异常,需要手工捕获
FileNotFoundException
文件找不到异常
当文件不存在就会抛出这种异常
ClassNotFoundException
类找不到异常
在类路径下不能加载指定的类
ClassCastException
类型转换异常
如将一个数字强制转换成字符串
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


