Java中异常的类型可以分为两类:检查性异常(Checked Exception)和非检查性异常(Unchecked Exception)。
检查性异常(Checked Exception)
检查性异常是指在编译阶段进行检查的异常,如果程序中出现了这些异常,编译器会提示你必须处理该异常。这些异常通常属于外部环境引起的异常,比如I/O异常、SQL异常等。
Java中常见的检查性异常包括:
IOException
它是Java中最常见的检查性异常之一,可以是在文件读写操作中发生,也可以在网络连接等操作时发生。
下面的示例代码展示了如何处理IOException:
import java.io.*;
public class FileReadDemo {
public static void main(String[] args) {
try {
File file = new File("path/to/file.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String st;
while ((st = br.readLine()) != null)
System.out.println(st);
}
catch (IOException e) {
System.out.println("Exception caught: " + e);
}
}
}
SQLException
SQLException是在连接数据库或操作数据库时可能发生的异常。
下面的示例代码展示了如何处理SQLException:
import java.sql.*;
public class DBConnectDemo {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/test?useSSL=false", "user", "password");
stmt = conn.createStatement();
String sql = "SELECT * FROM users";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
System.out.println(rs.getInt("id") + "\t" + rs.getString("name") + "\t" + rs.getString("email"));
}
}
catch (SQLException e) {
System.out.println("Exception caught: " + e);
}
catch (ClassNotFoundException e) {
System.out.println("Exception caught: " + e);
}
finally {
try{
if(stmt!=null)
conn.close();
}
catch(SQLException se){
}
try{
if(conn!=null)
conn.close();
}
catch(SQLException se){
se.printStackTrace();
}
}
}
}
非检查性异常(Unchecked Exception)
非检查性异常也叫做运行时异常,它通常指的是程序本身的错误,如空指针异常、数组下标越界异常等。
Java中常见的非检查性异常包括:
NullPointerException
当一个对象引用为 null,而你尝试调用该对象上的方法时,就会抛出 NullPointerException 异常。
String str = null;
System.out.println(str.substring(0, 1)); //throws NullPointerException
ArrayIndexOutOfBoundsException
当数组访问时索引超出范围时,将会抛出 ArrayIndexOutOfBoundsException 异常:
int[] arr = new int[5];
System.out.println(arr[5]); //throws ArrayIndexOutOfBoundsException
总的来说,Java中异常的类型非常多,开发者在编写代码的过程中需要了解不同类型的异常、产生异常的场景以及如何处理异常。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中有哪些类型的异常? - Python技术站