Java异常处理详情

文章介绍了Java中的异常处理机制,包括try-catch-finally语句块用于捕获和处理异常,throws关键字声明方法可能抛出的异常,以及自定义异常和try-with-resources语句。通过示例解释了每种方式的工作原理和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念

异常处理是一种机制,用于捕获和处理程序运行时的异常情况。异常处理可以帮助我们优雅地处理错误,并在出现异常时提供适当的响应。

异常处理的方式分为以下几种:

      (1)try - catch - finally语句块

      (2)  throws关键字

      (3)自定义异常

      (4)try-with-resources语句

以上异常处理方式,我们可以在Java中捕获和处理异常,确保程序的稳定性和可靠性。根据具体需求和异常类型选择适当的异常处理方式。

二、异常处理方式

2.1、try - catch - finally语句块

在try块中编写可能引发异常的代码。如果try块中的代码引发了与catch语句中声明的异常类型匹配的异常,程序将跳转到相应的catch块中进行异常处理。可以使用多个catch块来处理不同类型的异常。finally块是可选的,并且无论是否发生异常,都会在try-catch块执行完毕后执行。

例如:(注意看运行结果,明白该语句块的实现过程)

public class Test8 {
       public static void main(String[] args) {
       System.out.println(show());

       }
       public static int  show() {
    	   try {
    		   System.out.println("Yes");
    		   return 1;
    	   }catch (Exception e) {
    		   System.out.println("No");
    		   return 2;
    	   }finally {
    		   System.out.println("Why");
    		   return 3;
    	   }
       }
}

输出结果:

Yes
Why
3

语法如下:

try {
    // 可能引发异常的代码
} catch (Exception e) {
    // 捕获到该类型异常
	//1.系统将异常封装成一个Exception对象e
	//2.传递给catch
	//3.得到异常对象后,可行在此处写处理代码。
	//注:如果没有发生异常该段代码不执行
	
} catch (ExceptionType e2) {
    // 处理异常类型2的代码与上述方式相同
} finally {
    // 可选的finally代码块,在异常抛出或未抛出时都会执行
}
2.2、throws关键字

throws关键字用于在方法签名中声明可能抛出的异常类型,以便调用该方法的地方可以合适地处理或继续抛出这些异常。其中将发生的异常抛出,交给调用者(方法)来处理,最顶级的处理者就是JVM。

番外:关键字throw和throws的区别

throw : 用于人为手动触发异常,将异常对象抛出

throws : 用于方法声明,指定该方法可能抛出的异常类型,让调用者处理或继续抛出异常。

2.2.1、throw关键字

(1)用于在代码块中手动触发异常。

(2)throw后面通常跟着一个Exception对象,可以是Java内置的异常类(如:           NullPointerException、IllegalArgumentException等),也可以是自定义的异常类。

(3)当程序执行到throw语句时,会立即抛出指定的异常对象,并中断当前代码块的执行。

(4)通常用于在特定条件下主动抛出异常,例如输入验证失败、业务逻辑错误等情况。

样例:

public class Test8 {
    public static void main(String[] args) {
      show(null);
    }
    public static void show(String input) {
        if (input == null) {
            throw new IllegalArgumentException("字符串不能为空");
        }
        System.out.println("你猜有字符串为空时会不会打印出这条信息");
    }
      
}

2.2.2、throws关键字

(1)用于在方法声明中指定可能抛出的异常类型。

(2)throws后面跟着一个或多个异常类型,用逗号分隔。

(3)如果一个方法可能会引发多个异常,可以在方法声明中使用throws关键字列出这些异常类型。

(4)声明异常类型的目的是将异常的处理责任交给调用该方法的代码。

(5)调用该方法的代码必须进行相应的异常处理,或者再次使用throws关键字将异常向上抛出。

public class Test8 {
    public static void main(String[] args) {
    	try { 
    		show(); 
    	} catch (NumberFormatException e) { 
    		System.err.println("非数据类型不能强制类型转换。"); 
     		e.printStackTrace(); 
    	} 
    }
    public static void show() throws NumberFormatException { 
    	String s = "abc"; 
    	System.out.println(Double.parseDouble(s)); 
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值