Java中Try/catch/finally

本文深入探讨了Java中的异常处理机制,包括Error与Exception的区别、RuntimeException的特点及如何正确使用try、catch和finally语句块。此外,还通过示例代码演示了不同场景下finally块的行为表现。

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

Exception(extends thorowable):
Error: 不可用代码避免的错误(stackoverflow, memoverflow)
Exception:可以用代码避免的
      runtimeexcption:在代码运行期间才能发现的错误(nullpoint, /0, indexout)
      编译期间: io,filenotfound, sql…… 

----------------------------------------------------------------------------------------------------------------------------------------------

1. 一个try必须对应有catch或者finally,不能只有try,没有catch和finally

 2. 如果try中有异常发生,则try后面的语句就没有机会执行,会到catch执行
 3. finally是在try中return执行后,方法返回前执行,finally里面的修改不会影响返回结果
 4. 如果finally中有return,则会修改try中的return值,同时还会把throw的异常吃掉,误认为方法没有异常,在调用方法的地方不会再catch到这个异常。
  5. 不建议在finally中调用return,finally初衷是为了解决资源释放的问题。

  6. 当try或者catch中有return语句时,finally会继续执行,但是

在以下4种特殊情况下,finally块不会被执行:
1)在finally语句块中发生了异常。
2)在前面的代码中用了System.exit()退出程序。
3)程序所在的线程死亡。

4)关闭CPU。(计算机断电、失火、或遭遇病毒攻击)。


ps:  当try语句块里的某条语句出现异常时,而没有处理此异常的catch语句块时,此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的语句不会被执行,如果有catch语句时,会执行catch和finally语句,并把finally之后的语句也执行完毕。

package ray.test01;

public class Main {
	//TestTry
	public String testTry(){
		String result = "";
		int i = 0;
		try {
			result = "try";
//			int ii = 10 / i;
			System.out.println("exception occur");			
			return result;
		} catch (Exception e) {
			System.out.println("catch");
		} finally{
			result = "finally";
			System.out.println("finally");
		}
		System.out.println("after finally");
		return result;
	}
	public static void main(String[] args) {
		Main obj = new Main();
		System.out.println(obj.testTry());
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值