java中的异常处理

在一段代码中,常会出现异常和错误,首先必须明白什么是异常,什么是错误。
错误就是编译错误,说白了就是你的语法有错误了,由java虚拟机上报 了导致你的程序终止了,但是异常是虽然你某段程序出现了异常,但是程序还是可以继续运行的,只不过可能会抛出一个异常,那么今天我就来复习一下java中的异常处理。

一:什么是异常处理?

异常处理机制就像我们对平时可能遇到的意外情况,预先想好了一些处理的办法。也就是说,在程序执行代码的时候,万一发生了异常,程序会按照预定的处理办法对异常进行处理,异常处理完毕后,程序继续运行。

java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws
在这里插入图片描述
三.常见的异常类型

Exception 异常层次结构的*根类

ArithmeticException 算数错误情形

ArrayIndexOutOfBoundsException 数组下标越界

NullPointerException 尝试访问null对象成员

ClassNotFoundException 不能加载所需的类

InputMismatchException 欲得到的数据类型与实际输入的类型不匹配

IllegalArgumentException 方法接受到非法参数

ClassCastException 对象强制类型转换出错

NumberFormatException 数字格式转换异常
四、直接上代码实例:

1、try
{
//有可能出现的异常的语句
}catch(异常类 异常对象)
{
//编写异常的处理语句
}
finally{
//一定会运行到的程序块。
}
当然也是会有多个异常同时处理的,如下代码(代码仅为 了理解)

int  i=10;
int j=0;
try{
		int temp=i/j;
		System.out.println("两个数字相除的结果:"+temp);
	}catch(ArithmeticException e){
		System.out.println("出现了异常:"+e);
    }catch(NumberFormatException e){
			System.out.println("数字转换异常:"+e);
			//这是为了检测用的,其实真正的程序员都用的是
			//e.printStackTrace();
	}
finally{
		System.out.println("不管是否出现异常,都执行此代码");
}

还有很多关于异常处理的语句使用,在我们的课本上没有讲解太多的,有兴趣的可以看一下下面这篇文章:java异常处理总结
注意:如果不想一个个列出来异常的详细情况,可以直接

~~catch(Exveption e)
{
e.printStackTrace();
}~~ 

但对于一个程序员来说,最好是分别进行捕获,所以忘记刚才我说了什么,你没有不想。

2、throws和throw关键字
使用throws声明的方法表示此方法不处理异常,而交给方法的调用处进行处理。

public int div(int i,int j) throws Exception{
		int temp=i/j;
		return temp;
}

注意:不要再主方法中使用throws关键字。

与throws不同,可以直接使用throw关键字人为的抛出一个异常,抛出时直接抛出异常类的实例化对象即可。详细的操作可以参考课本

try{
		throw new Exception("自己抛出来的异常");
}catch(Exception e){
		e.printStackTrace();
}

3、自定义异常类

class MyException extends Exception{
	public MyException(String msg) {
		super(msg);
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		try {
			throw new MyException("自定义异常。");
		}catch(Exception e) {
			System.out.println(e);
		}
	

在这里插入图片描述
4、断言

assert boolean 表达式;
assert boolean 表达式:详细的信息

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int x[]= {1,2,3};
		assert x.length==0:"数组长度不为0";

在开发中不提倡使用断言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值