Java自学笔记⑧

异常处理

异常的定义:在程序中,错误可能产生于程序员没有预料到的各种情况,或者是超出了程序员可控范围的环境因素,如试图打开一个根本不存在的文件等,在Java中,这种在程序运行时可能出现的一些错误称为异常

例子:

public class Baulk {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int result=3/0;
		System.out.println(result);
	}

}
//运行结果报错
//Exception in thread "main" java.lang.ArithmeticException: / by zero
//		at Baulk.main(Baulk.java:6)

捕捉处理异常

try{
    //程序代码块
}catch(Exceptiontype e){
    //对Exceptiontype的处理
}
finally{
    
}
注:finally代码块,无论程序是否发生异常都会执行。
Exception对象中最常用的三个方法:
(1)getMessage()方法:获取有关异常事件的信息。
(2)toString()方法:获取异常的类型与性质。
(3)printStackTrace()方法:获取异常事件发生时执行堆栈的内容。
遇到需要处理多种异常信息的情况时,可以在一个try代码块后面跟多个catch代码块,注意:如果使用了多个catch代码块,则catch代码块中的异常类顺序是先子类后父类,因为父类的引用可以引用子类的对象。Exception是所有异常的父类。

有三种特殊情况,finally块不会被执行

(1)在finally代码块中发生了异常
(2)在前面的代码中使用了System.exit()退出程序
(3)程序所在的线程死亡

在方法中抛出异常

使用throws关键字
//返回值类型名 方法名(参数表)throws 异常类型名{
//	方法体
//}
public class Shoot {
	static void pop() throws NegativeArraySizeException{
        //定义方法并且抛出NegativeArraySizeException异常
		int[] arr=new int[-3];
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			pop();
		} catch (NegativeArraySizeException e) {
			// TODO: handle exception
			System.out.println("pop()方法抛出的异常");
		}
	}

}
使用throw关键字

throw关键字通常用于在方法体中“制造”一个异常,程序在执行到throw语句时立即终止,它后面的语句都不执行。

//throw new 异常类型名(异常信息)
public class ThrowTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int num1=25;
		int num2=0;
		int result;
		if(num2==0){
			throw new ArithmeticException("这都不会,傻批,除数为0了");
		}
		result=num1/num2;
		System.out.println("两数商为"+result);
		
	}

}
//控制台输出
//Exception in thread "main" java.lang.ArithmeticException: 这都不会,傻批,除数为0了
//	at com.cdu.rsj.ThrowTest.main(ThrowTest.java:11)

throws和throw的区别:

throws用在方法声明后面,表示抛出异常,由方法的调用者处理,而throw用在方法体内,用来制造一个异常,由方法体内的语句处理。

throws是声明这个方法会抛出这种类型的异常,以便使它的调用者知道要捕获这个异常,而throw是直接抛出一个异常实例。

throws表示出现异常的一种可能型,并不一定会发生这些异常,如果使用throw则一定会产生某种异常。

自定义异常

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值