首页 > 编程语言 >23.10.18(常用Java异常处理情况整合)

23.10.18(常用Java异常处理情况整合)

时间:2023-10-18 21:59:18浏览次数:33  
标签:语句 23.10 Java 处理 18 捕获 try catch 异常

在JAVA项目中,异常处理是一项非常重要的任务。合理处理异常能够提高程序的稳定性和可靠性,保证程序的正常运行。下面是关于JAVA项目中常用的异常处理情况的总结:

1. 空指针异常(NullPointerException):在使用一个空对象的成员变量或方法时会抛出该异常。可以通过判断对象是否为空来避免该异常的发生,或者使用try-catch语句来捕获并处理该异常。

String str = null;

// 判断对象是否为空
if (str != null) {
    // 使用对象的成员变量或方法
}

// 使用try-catch语句捕获并处理空指针异常
try {
    // 使用对象的成员变量或方法
} catch (NullPointerException e) {
    // 处理空指针异常的代码
}

 

2. 类型转换异常(ClassCastException):当尝试将一个对象转换为不兼容的类型时会抛出该异常。可以使用instanceof关键字来判断对象的类型,避免类型转换异常的发生。

Object obj = new Integer(10);

// 判断对象的类型
if (obj instanceof Integer) {
    // 进行类型转换
    Integer num = (Integer) obj;
}

// 使用try-catch语句捕获并处理类型转换异常
try {
    // 进行类型转换
    Integer num = (Integer) obj;
} catch (ClassCastException e) {
    // 处理类型转换异常的代码
}

 

3. 数组越界异常(ArrayIndexOutOfBoundsException):当尝试访问数组中不存在的元素时会抛出该异常。可以通过判断数组的长度来避免该异常的发生,或者使用try-catch语句来捕获并处理该异常。

int[] arr = {1, 2, 3};

// 判断数组的长度
if (index >= 0 && index < arr.length) {
    // 访问数组中的元素
}

// 使用try-catch语句捕获并处理数组越界异常
try {
    // 访问数组中的元素
} catch (ArrayIndexOutOfBoundsException e) {
    // 处理数组越界异常的代码
}

 

4. 文件不存在异常(FileNotFoundException):当尝试打开一个不存在的文件时会抛出该异常。可以使用File类的exists()方法来判断文件是否存在,或者使用try-catch语句来捕获并处理该异常。

File file = new File("path/to/file.txt");

// 判断文件是否存在
if (file.exists()) {
    // 文件存在时的操作
}

// 使用try-catch语句捕获并处理文件不存在异常
try {
    // 打开文件
} catch (FileNotFoundException e) {
    // 处理文件不存在异常的代码
}

 

5. 输入输出异常(IOException):在进行文件读写或网络通信时,可能会发生输入输出异常。可以使用try-catch语句来捕获并处理该异常,或者使用finally块来释放资源。

try {
    // 执行可能发生输入输出异常的代码
} catch (IOException e) {
    // 处理输入输出异常的代码
} finally {
    // 释放资源的代码
}

 

6. 算术异常(ArithmeticException):当进行除零操作或其他不合法的数学运算时会抛出该异常。可以使用if语句来判断操作数是否为零,避免算术异常的发生。

int numerator = 10;
int denominator = 0;

// 判断操作数是否为零
if (denominator != 0) {
    // 执行除法运算
} else {
    // 处理除零异常的代码
}

// 使用try-catch语句捕获并处理算术异常
try {
    // 执行可能发生算术异常的代码
} catch (ArithmeticException e) {
    // 处理算术异常的代码
}

7. 类未找到异常(ClassNotFoundException):当尝试加载一个不存在的类时会抛出该异常。可以使用try-catch语句来捕获并处理该异常,或者使用Class.forName()方法来动态加载类。

try {
    // 加载类
    Class.forName("com.example.MyClass");
} catch (ClassNotFoundException e) {
    // 处理类未找到异常的代码
}

8. 方法未找到异常(NoSuchMethodException):当尝试调用一个不存在的方法时会抛出该异常。可以使用try-catch语句来捕获并处理该异常,或者使用反射机制来调用方法。

try {
    // 获取方法
    Method method = obj.getClass().getMethod("methodName");
    // 调用方法
    method.invoke(obj);
} catch (NoSuchMethodException e) {
    // 处理方法未找到异常的代码
} catch (IllegalAccessException e) {
    // 处理非法访问异常的代码
} catch (InvocationTargetException e) {
    // 处理调用目标异常的代码
}

9. 网络异常(SocketException):在进行网络通信时,可能会发生网络异常。可以使用try-catch语句来捕获并处理该异常,或者使用网络编程中提供的异常处理机制。

try {
    // 进行网络通信
} catch (SocketException e) {
    // 处理网络异常的代码
}

10. SQL异常(SQLException):在进行数据库操作时,可能会发生SQL异常。可以使用try-catch语句来捕获并处理该异常,或者使用数据库连接池等工具来管理数据库连接,避免SQL异常的发生。

try {
    // 执行数据库操作
} catch (SQLException e) {
    // 处理SQL异常的代码
}

除了以上常见的异常处理情况,还可以根据具体的业务需求和项目特点进行异常处理。在处理异常时,可以采用以下几种方式:

1. 使用try-catch语句:通过捕获异常并在catch块中进行相应的处理,可以保证程序的正常运行。

public class TryCatchExample {
    public static void main(String[] args) {
        try {
            int result = divide(10, 0);
            System.out.println("结果:" + result);
        } catch (ArithmeticException e) {
            System.out.println("除零异常:" + e.getMessage());
        }
    }

    public static int divide(int numerator, int denominator) {
        return numerator / denominator;
    }
}

在上述示例中,我们定义了一个divide()方法来进行除法运算。在main()方法中,我们调用divide()方法,并使用try-catch语句来捕获可能发生的除零异常。如果除零异常发生,catch块中的代码将被执行,并打印出异常信息。

2. 使用throws关键字:在方法声明中使用throws关键字,将异常抛给调用者处理。

public class ThrowsExample {
    public static void main(String[] args) {
        try {
            readFile();
        } catch (FileNotFoundException e) {
            System.out.println("文件不存在:" + e.getMessage());
        }
    }

    public static void readFile() throws FileNotFoundException {
        File file = new File("path/to/file.txt");
        Scanner scanner = new Scanner(file);
        // 读取文件内容
    }
}

在上述示例中,我们定义了一个readFile()方法来读取文件内容。由于该方法可能会抛出文件不存在异常,所以在方法声明中使用了throws关键字。在main()方法中,我们调用readFile()方法,并使用try-catch语句来捕获可能发生的文件不存在异常。

3. 使用finally块:无论是否发生异常,finally块中的代码都会被执行,可以用来释放资源或进行必要的清理工作。

public class FinallyExample {
    public static void main(String[] args) {
        try {
            openFile();
        } catch (FileNotFoundException e) {
            System.out.println("文件不存在:" + e.getMessage());
        } finally {
            System.out.println("释放资源");
        }
    }

    public static void openFile() throws FileNotFoundException {
        File file = new File("path/to/file.txt");
        Scanner scanner = new Scanner(file);
        // 读取文件内容
    }
}

在上述示例中,我们定义了一个openFile()方法来打开文件并读取文件内容。在main()方法中,我们调用openFile()方法,并使用try-catch语句来捕获可能发生的文件不存在异常。无论是否发生异常,finally块中的代码都会被执行,这里我们使用finally块来释放资源。

4. 自定义异常:根据项目的需求,可以自定义异常类来处理特定的异常情况,提高代码的可读性和可维护性。

public class CustomExceptionExample {
    public static void main(String[] args) {
        try {
            checkAge(15);
        } catch (InvalidAgeException e) {
            System.out.println("年龄无效:" + e.getMessage());
        }
    }

    public static void checkAge(int age) throws InvalidAgeException {
        if (age < 18) {
            throw new InvalidAgeException("年龄不能小于18岁");
        }
    }
}

class InvalidAgeException extends Exception {
    public InvalidAgeException(String message) {
        super(message);
    }
}

在上述示例中,我们定义了一个checkAge()方法来检查年龄是否小于18岁。如果年龄小于18岁,我们会抛出自定义的InvalidAgeException异常。在main()方法中,我们调用checkAge()方法,并使用try-catch语句来捕获可能发生的InvalidAgeException异常。

总之,合理处理异常是JAVA项目中不可或缺的一部分。通过捕获和处理异常,可以提高程序的稳定性和可靠性,保证程序的正常运行。在处理异常时,需要根据具体的业务需求和项目特点选择合适的异常处理方式。

标签:语句,23.10,Java,处理,18,捕获,try,catch,异常
From: https://www.cnblogs.com/atrue/p/17773424.html

相关文章

  • 10.18(随机出题Web页面)
    今天完成了javaweb的出题系统,比较简陋jsp<%@pagecontentType="text/html;charset=UTF-8"language="java"%><!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>添加信息</title>&l......
  • 日常记录--2023-10月18日--周三
    日程:今天只有上午有课,7点起床,吃了个早饭去上课,早上第一节数据结构,学习了队列,还讲了相关应用。中午午休一个小时,下午起来干了点别的,完善了之前的代码,晚上7-9点听了下代码随想路,学了会javaweb。学了什么:可恶的Javaweb,复习了数据结构。PS:不想学习,想要成为月饼盒;......
  • javaweb第10章源码
    javaweb第10章源码下载链接:https://wwpv.lanzoue.com/iDhBE1c5hcxg文件结构CHAPTER10│.classpath│.project│chapter10.iml│├─.idea│encodings.xml│misc.xml│modules.xml│workspace.xml│├─.settings│.jsdtscope......
  • 10.18闲话
    今天没模拟赛,爽爽爽......
  • 23.10.18 Java当中的异常处理
    Java当中的异常处理在Java中,异常是指在程序执行期间发生的错误或异常情况,可以分为两种类型:受检异常(CheckedException)和非受检异常(UncheckedException)。受检异常:受检异常是指需要在代码中显式处理的异常,通常继承自Exception类的子类。例如,IOException和SQLException是受检异......
  • 比赛经验(10/18)
     (1)有些比赛问题可以用公式直接计算,仔细辨别,不要盲目计算 (2)注重时间复杂度的分析,估算时间,选择合适的算法或者其他解题方式   时间复杂度 (3)对于出错的题目先跳过,一直提交可能会蒙圈,返回来再写时可能会清晰些......
  • HO引擎近况20231018
    放完假就开始忙现在又开始晚上9点下班了,一直到现在才想起来写博客公司搬家了。搬到了原来公司附近的写字楼里面工作环境变了,算是有好有坏吧好处是当初排座位的时候我要了一个靠过道的位置,现在看来还真的不错能把小柜子放到桌子外面的过道上一部分,还能放两个小柜子不靠窗户所......
  • 20231018打卡
    上午,我们进行了一次听写练习。这是一项对我们英语听力和拼写能力的考验。我在经过认真准备后,感觉状态非常好,成功地完成了听写。这让我感到很有成就感,同时也对自己的英语学习有了更大的信心。下午,为了放松自己,我和几个朋友一起去打篮球。我们组成了一个3V3的篮球队,这次打篮球让我......
  • 拓扑排序(10/18)
    拓扑排序https://raelum.blog.csdn.net/article/details/129650604?ydreferer=aHR0cHM6Ly93d3cuYWN3aW5nLmNvbS9hY3Rpdml0eS9jb250ZW50L2NvZGUvY29udGVudC80NzEwNi8%3D #include<cstring>#include<iostream>#include<algorithm>usingnamespacestd;......
  • 10.18日记
    //给每个主节点添加点击事件监听器mainNodes.forEach(mainNode=>{  mainNode.addEventListener('click',(e)=>{    //阻止默认链接行为    e.preventDefault();    //切换子菜单的显示状态    constsubMenu=mainNode.next......