java第 5️⃣ 天 异常相关

本文深入探讨Java异常处理机制,包括try-catch-finally结构、checked与unchecked异常的区别、Error与Exception的处理策略,以及如何自定义异常。同时,文章提供了异常处理的最佳实践,帮助开发者理解和避免异常滥用。

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

java异常常见格式

try// 创建一些Socket连接 IO输出流...{
	// 可能会出现错误  通常是访问外部文件 链接网页
}catch(Exception ex){
	// catch 根据 异常类型进行匹配来捕捉 相应类型的异常
	// catch到了一个其实并没有checked Exception ,java程序会报错,因为java明确知道这个异常不会发生
}

/*
	还有一种处理错误的方法 就是 向上抛出异常,在方法签名里添加 throws xx异常
*/

平时处理的异常通常是 Exception

针对于 Error 异常,在代码中是无法处理的,比如常见的 内存不足,磁盘空间访问失败等等。
throwable是所有 异常的父类
包含 Error 和 Exception
而 Error 和RuntimeException 是 checked Exception的父类

按照 处理方式不同又分为2种checked 和 unchecked

checked Exception 是必须要用 以上2种 方法来处理的异常
而 unchecked Exception 是可以不用异常处理的
但是运行时会 抛出异常
比如

String str = null;
null.toLowercase();
// 此时抛出了 nullpointerException

自定义异常

java给我们封装了常见的异常类,如果业务上有需要,可以创建自己的异常类,把类型,错误信息和出错时的调用栈抛出。

public class MyRuntimeException extends RuntimeException{
	//可以用 IDE 自动生成
	public MyRuntimeException (){}
	public MyRuntimeException (String message){
		super(message);
	}
	public MyRuntimeException (String message, Throwable cause){
		super(massage,cause);
	}
	public MyRuntimeException (Throwable cause){
		super(cause);
	}
}

// 封装好 上面的类

public void callThrowRTException(){
	try{ 
	// 下列会抛出 nullpointerException 
	Object n = null;
	n.toString();
	}catch(Exception ex){
	// 捕捉到 异常之后 抛出 自定义的异常类 
		throw new MyRuntimeException(" 执行callThrowRTException 出错",ex);
	}
}

完整形式 Try - catch - finally

3 种形式
try {

 }catch{
	
 }finally{
	finally 里 最好不要写 return 语句。
	若写了有return 则会把 try,catch的语句覆盖掉,相当于无视try ,catch中的return。
}

try{
	
}catch(**ClassNotFoundException** e){

}catch(**IOException** e){
	
}
// 简化 版本:

try{

}catch(ClassNotFoundException | IOException e){

}

catch 的类型中不能有多种可能,不然会报错
比如 catch了Exception 就不能catch ClassNotFoundException
在 try ,catch 中有return 变量值A,finally中在对 变量A进行赋值,此时赋值是无效的。

注意 事项
不能把 异常当做 凌波微步 ,充当方法之间的跳转手段。
因为异常捕捉 非常消耗 资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值