JAVA异常处理与异常信息获取(Throwable类)学习

JAVA异常处理与异常信息获取(Throwable类)


java异常处理的关键字:try、catch、finally、throw、throws

抛出异常throw


在编写程序时,一定要考虑 到程序出现问题的情况。如在定义方法时,方法要接受参数。那么,当调用方法使用接受到的参数时,要优先考虑对参数合法性的判断。如果数据不和法,应该告诉调用者。**使用抛出异常来告诉调用者**

throw关键字,用来抛出一个指定的异常对象。操作如下

  1. 创建一个对象,封装提示信息。
  2. 需要将异常对象告知调用者。throw关键字就是用来将这个异常传递给调用者的。
  3.           throw 用在方法内抛出 一个异常,并结束当前方法的执行。

使用格式:
throw new xxException("异常原因");

注意:

  1. throw关键字必须在方法内部。
  2. throw关键字后new的对象必须是Exception或Exception的子类。
  3. throw关键字抛出指定的异常对象,必须进行处理。
  4. throw关键字后创建的是RuntimeException或其子类可以不进行处理,交给JVM处理。
  5. throw关键字后创建的是编译异常(写代码的时候报错),则必须处理这个异常throws或者try...catch。
public stactic int getElement(int[] arr,int index){
	if(arr == null){
		throw new NullPointerException("传递的参数null");//NullPotionterException空指针异常
		/*
			当调用这个方法时先对其传进来参数进行校验
			NullPointerException(运行时异常,可以交给JVM处理)
		*/
	}
	if(index < 0 || index > arr.length-1){
		throw new ArrayIndexOfBoundsException("数组索引越界");//ArrayIndexOfBoundsException数组索引越界异常
		/*
			当调用这个方法时先对其传进来参数进行校验
			ArrayIndexOfBoundsException(运行时异常,可以交给JVM处理)
		*/
	}
	return arr[index];
}
	


Objects非空判断

Objecta中的静态方法requireNonNull用来判断传进来的是不是null,如果则抛出NullPointerException空指针异常。

方法源代码

public static <T> T requireNonNUll(T obj){
	if(obj == null)
		throw new NullPointerException();
	return obj;
}
/*
	requnireNonNull();重载方法可以接受两个参数:第一个是obj,第二个是异常抛出时debug窗口输出的String。
*/


声明异常throws

throws关键字:交给别人处理遗产。
作用:当方法内部抛出异常对象的时候,我们必须进行处理。可以使用throws处理异常对象,会把异常对象抛出给调用者。(自己不处理)最终交给JVM处理-->中断处理。

使用格式: 方法声明时使用

修饰符 返回值类型 方法名 (参数列表) throws XXXException..{
	throw new XXXException("异常产生的原因");
}
注意:
	1.throws关键字必须写在方法的声明处。
	2.throws关键字后边声明的异常必须是Exception或其子类。
	3.方法内部如果抛出了多个异常对象,throws后必须也声明多个异常。
	4.若抛出的对象有子父关系,直接声明父类。
	5.调用了一个声明抛出异常的方法,必须处理。要么继续使用throws抛出方法给掉用者处理,要么
	抛给JVM,要么try...catch自己处理。
public static void readFile(String fileName) throws FileNotFoundExcetion{
	if(!fileName.equals("D:\\\\test.txt")){
		throw new FileNotFoundExcetion("文件路径不对");//FileNotFoundException是编译异常,必须处理这个异常。可以使用throws继续抛出。
	}
}


try...catch捕获异常

如果异常出现,立刻终止程序。所以我们要自己处理。
  1. 该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)
  2. 在方法中使用try-catch来处理异常

try-catch就是捕获异常。

  • 捕获异常:java中对异常有针对性的语句进行捕获,可以对出现的异常指定处理方式。

语法如下:

try{
	//可能会出现异常的语句
}catch(/*异常类型*/ e/*用来接收try中抛出的异常,抛出什么样的类型。变量什么类型*/){
	//记录/打印/继续抛出/处理逻辑
}
//catach可以有多个

Throwable类获取异常信息


Throwable ——> Exception的父类
Throwable类中定义了三个异常处理的方法
String getMessage() 返回 throwable 的简短消息字符串。
String toString() 返回 throwable 的详细消息字符串。
void printStackTrace() JVM打印异常对象,默认方法,打印的最为全面。


finally代码块

finally:无论是否出现异常都会执行。 finally:无法单独使用,必须和try一起。一般用于资源释放(回收),无论是否异常都要执行,IO流。

使用格式:

try{
	//可能会产生异常的代码
}catch(){
	//异常处理逻辑
}finally{
	//无论是否异常都会执行
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

['nju:bi]

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

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

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

打赏作者

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

抵扣说明:

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

余额充值