黑马程序员 Java基础_5 Java异常处理

一、什么是异常处理

在程序的开发过程中,错误通常分成两类,分别是编译错误和运行错误。编译错误时比较容易发现错误的,而运行错误特别让人头疼。所以为了增强项目稳定性,就要在出现异常是进行相关处理,也就是异常处理。

在Java中提供了一个Throwable类,它是java中所以错误和异常的超类,只有对象是此类,才能通过虚拟机进行抛出。它有两个子类,分别是Error和Exception,当发生Error时,程序员根本解决不了,只有终止程序,对于Exceptio,还可以处理,所以异常处理就是对Exception的处理。

1、try catch语句

Java程序执行过程中如果出现异常,会自动生成一个异常对象,该异常对象被自动提交给Jvm,当 jvm接受到异常对象时,会寻找处理这一异常对象的代码,并把当前异常对象交给其处理,这一过程称为catch(捕获)异常。如果jvm找不到可以捕获异常的方法,这运行时系统终止,程序也会退出。

try的意思就是测试它所含的代码是否会发生异常,而catch的意思是在异常发生时捕获它,并进行相应的处理,让程序不受异常影响继续执行下去。例如:

package test1;

public class TryDemo {

	public static void main(String[] args) {
		
		int number=0;
		try{
			number=Integer.parseInt(args[0]);
			System.out.println("hello异常");
		}
		catch(Exception e){
			System.out.println("非法数字");
		}
	}

}
还有多重catch语句

import java.util.*;
public class TryDemo {

	public static void main(String[] args) {
		
		Scanner in=new Scanner(System.in);
		try{
			System.out.println("请输入第一学期总学时:");
			int totalTime=in.nextInt();
			System.out.println("请输入第一学期课程数目:");
			int totalCourse=in.nextInt();
			System.out.println("第一学期各课程平均学时:"+totalTime/totalCourse);
		
		
	}
		catch(InputMismatchException e1){
			System.out.println("输入不是数字") ;
		}
		catch(ArithmeticException e2){
			System.out.println("课程数不能为0") ;
		}
		catch(Exception e3){
			System.out.println("发生错误") ;
		}
}}
多重catch语句需要注意一点就是由上到下,异常的范围要从小到大。

2、使用throw和throws引发异常

如果想在程序中明确地引发异常,需要用到throw 和throws。

throw语句

throw与句用来明确的抛出一个异常。需要注意的是throw抛出的是一个对象,而且throw语句一执行,后面的语句都不会执行了。

public class TryDemo {

	public static void main(String[] args) {
		
		int number=0;
		try{
			number=Integer.parseInt(args[0]);
			System.out.println("hello异常");
		}
		catch(Exception e){
			throw new ArrayIndexOutOfBoundsException("角标越界");
		}
	}

}
throws语句

如果一个方法a可以引发异常,可是他本身不对异常进行处理,那么a方法必须把这异常抛给调用者以使得程序继续执行下去。这是就要用throws语句了。

public class TryDemo {

	public static void main(String[] args) {
		
			try{
				test();
			}
			catch(Exception e){
				
			}
		}
	public static void test() throws Exception{
		
	}
}

3、finally关键字

finally里面的代码在 jvm 没有关闭的情况下都会执行,因为在try,catch 语句了发生了异常代码就不会再执行,有时候需要关闭一些资源,finally通常用来运行关闭资源的代码。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值