java-常见异常类型

以下列举了几种常见的异常情况

1.算术异常 - 除数为零

public class Main {
     public static void main(String[] args) {
         try {
             int result = divide(10, 0);
             System.out.println("结果: " + result);
         } catch (ArithmeticException e) {//捕获divide的算术错误并打印
             System.out.println("算术异常: " + e.getMessage());
         }
     }

     //除法函数
     public static int divide(int numerator, int denominator) {
         try {
             return numerator / denominator;
         } catch (ArithmeticException e) {//捕获并抛出算术异常
             throw new ArithmeticException("除数不能为零");
         }
     }

 }

输出结果:

算术异常: 除数不能为零

2.空指针异常 - 访问 null 对象的函数方法


 public class Main {
     public static void main(String[] args) {
         try {
             //创建一个空的字符串对象
             //null 表示一个引用类型的变量不指向任何对象,即空引用
             //因此调用与对象相关的方法或操作时会抛出空指针异常
             String str = null;
             
             //获取空字符串的长度
             int length = str.length();
             System.out.println("字符串长度: " + length);
         } catch (NullPointerException e) {//捕获空指针异常
             System.out.println("空指针异常: " + e.getMessage());
         }
     }
 }

输出结果:

空指针异常: Cannot invoke "String.length()" because "str" is null

3.数组下标越界异常 - 访问无效索引

public class Main {
     public static void main(String[] args) {
         try {
             int[] numbers = {1, 2, 3};

             //访问越界数组索引位置
             int value = numbers[4];
             System.out.println("数组元素值: " + value);
         } catch (ArrayIndexOutOfBoundsException e) {//捕获数组下标越界异常
             System.out.println("数组下标越界异常: " + e.getMessage());
         }
     }
 }

输出结果:

数组下标越界异常: Index 4 out of bounds for length 3

4.文件不存在异常 - 打开或读取不存在的文件

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        try {
            // 创建一个File对象,指定文件路径
            File file = new File("nonexistent.txt");

            // 创建一个Scanner对象用于读取文件内容
            Scanner scanner = new Scanner(file);

            // 读取文件的下一行内容并输出
            System.out.println("文件内容: " + scanner.nextLine());

            // 关闭Scanner对象
            scanner.close();
        } catch (FileNotFoundException e) {
            // 捕获文件不存在异常,并输出异常信息
            System.out.println("文件不存在异常: " + e.getMessage());
        }
    }
}

输出结果:

文件不存在异常: nonexistent.txt (系统找不到指定的文件。)

5.格式化异常 - 解析无效的数字格式

public class Main {
    public static void main(String[] args) {
        try {
            // 定义一个字符串
            String str = "abc";
            
            // 将字符串解析为整数
            int value = Integer.parseInt(str);
            
            // 输出解析结果
            System.out.println("解析结果: " + value);
        } catch (NumberFormatException e) {
            // 捕获格式化异常,并输出异常信息
            System.out.println("格式化异常: " + e.getMessage());
        }
    }
}

输出结果:

格式化异常: For input string: "abc"

6.非法参数异常 - 传递无效的参数值

public class Main {
    public static void setAge(int age) {
        if (age < 0) {//设置年龄。如果年龄小于0,抛出 IllegalArgumentException 异常
            throw new IllegalArgumentException("年龄不能为负数");
        }
    }

    public static void main(String[] args) {
        try {
            // 调用 setAge 方法设置年龄为负数
            setAge(-10);
        } catch (IllegalArgumentException e) {
            // 捕获非法参数异常,并输出异常信息
            System.out.println("非法参数异常: " + e.getMessage());
        }
    }
}

输出结果:

非法参数异常: 年龄不能为负数

7.类型转换异常 - 无效的类型转换

public class Main {
    public static void main(String[] args) {
        try {
            // 定义一个对象,存储字符串
            Object value = "Hello";
            
            // 将对象强制转换为 Integer 类型
            Integer number = (Integer) value;
            
            // 输出转换结果
            System.out.println("转换结果: " + number);
        } catch (ClassCastException e) {
            // 捕获类型转换异常,并输出异常信息
            System.out.println("类型转换异常: " + e.getMessage());
        }
    }
}

输出结果:

类型转换异常: class java.lang.String cannot be cast to class java.lang.Integer

8.IOException - 处理文件输入/输出异常

import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try {
            // 创建一个 File 对象,表示要读取的文件
            File file = new File("file.txt");

            // 创建一个 FileReader 对象,用于读取文件
            FileReader reader = new FileReader(file);

            // ... 在此进行文件读取操作

            // 关闭 FileReader
            reader.close();
        } catch (IOException e) {
            // 捕获文件读取异常,并输出异常信息
            System.out.println("文件读取异常: " + e.getMessage());
        }
    }
}

输出结果:

文件读取异常: file.txt (系统找不到指定的文件。)

9.SocketException - 处理网络通信异常

import java.io.IOException;
 import java.net.InetAddress;
 import java.net.Socket;
 import java.net.SocketException;

 public class Main {
     public static void main(String[] args) {
         try {
             // 获取 域名csdn.net 的 IP 地址
             InetAddress address = InetAddress.getByName("www.csdn.net");

             // 创建一个 Socket 对象,指定要连接的主机和端口
             //按理应该使用80(http)或443(https)
             //为了报异常我这里故意写个81
             //愿大家都能在编程领域度过81难取得真经
             Socket socket = new Socket(address, 81);

             // ... 在此进行网络通信操作
             
             socket.close();
         } catch (SocketException e) {
             System.out.println("Socket异常: " + e.getMessage());
         } catch (IOException e) {
             System.out.println("IO异常: " + e.getMessage());
         }
     }
 }

输出结果:

Socket异常: Connection refused: connect

10.SQLException - 处理数据库操作异常

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Main {

    public static void main(String[] args) {
        try {
            //对于现代的 MySQL JDBC 驱动程序来说,通常不需要调用
            //所以注释了(作为拓展)
            // 注册数据库驱动程序
            //Class.forName("com.mysql.jdbc.Driver");

            // 设定连接信息(下面这两个参数都加上)
            //useSSL=false是去除SSL检查
            //serverTimezone=Asia/Shanghai是设置时区
            String url = "jdbc:mysql://localhost:3306/szc_db?useSSL=false&serverTimezone=Asia/Shanghai";
            String username = "root";
            
            //密码是错的所以会有异常
            String password = "1234";

            // 建立数据库连接
            Connection connection = DriverManager.getConnection(url, username, password);

            // ... 在此进行数据库操作

            // 关闭数据库连接
            connection.close();
        } catch (SQLException e) {
            System.out.println("数据库操作异常: " + e.getMessage());
        }
    }
}

输出结果:

数据库操作异常: Public Key Retrieval is not allowed

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码对我眨眼睛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值