Java异常

一.异常的概念和分类

1.1 什么是异常?

  • 所谓的异常是指,程序运行过程中,发生了一些不正常的事件。(如:除0溢出, 数组下标越界,所要读取的文件不存在)

1.2异常导致的后果

  • Java程序执行的过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息,并将其提交给运行时的Java系统,这个过程称为抛出异常,不处理的话会直接导致程序中断。

1.3如何防止程序中断

  • 设计良好的程序应该在程序异常发生时,提供处理这些异常的方法。使得程序不会因为异常的发生的阻断,或产生不可预见的结果。

1.4异常分类(throw able)

  • 按能否处理分类
    1. error:系统产生,无法处理,和代码没有关系
    2. Exception:能处理,其又分为IO Exception和Runtime Exception
  • 按是否受查分类
  1. checkedException: Exception及其子类(Runtime Exception及其子类除外),由代码控制能力之外产生的运行错误,必须处理,否则通不过编译
  2. uncheckedException: error和Runtime Exception及其子类,Runtime Exception一般代表编程错误,可以不用处理

1.5 异常处理机制

  • try-catch-finally
  1. try:监控区域,执行可能产生异常的代码
  2. catch:捕获,处理异常
  3. finally:善后处理,无论是否发生异常,代码总能执行

二.异常处理

2.1 try-catch-finally

  • try 语句中放的时要检测的Java代码, 肯能会抛出异常,也可能会正常执行
  • catch(异常类型}()是当Java运行时,系统接收到try快中所抛出的异常对象,会寻找能处理这一异常的catch来处理异常(可以有多个catch块)
  • finally{},不管系统有没有抛出异常,都会去执行,一般用来释放资源。除非在这之前执行了System.exit(0)
  • try,catch,finally,不一定要全部写上,可以是try+catch和try+finally;但使用了try就一定要处理异常。
  • 所有异常经过正确处理后,程序是可以继续正常运行的。
import java.util.Scanner;


public class error {

	public static void main(String[] args) {
		
		int a = 10;
		int b ;
		double c;
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入除数:");
		b = sc.nextInt();
	
		try{
			
			c = a/b;
		}catch(java.lang.ArithmeticException e){
			
			System.out.println("除数为0,请重新输入:");
			b= sc.nextInt();
			c= (double)a/b;
			System.out.println("c="+c);
			
		}finally{
			
			System.out.println("finally end");
			
		}
		
		System.out.println("class end");
		System.out.println("class end");
		System.out.println("class end");
		System.out.println("class end");
		System.out.println("class end");
	}
	
}

请输入除数:
0
除数为0,请重新输入:
10
c=1.0
finally end
class end
class end
class end
class end
class end

2.2 throw 和throws

  • throw可以手动抛出异常,作为程序员可以在任意位置,手动抛出异常

  • throws用于在方法上标识要暴露的异常,抛出的异常交由调用者处理

  • 两者的区别
    - throw 用在方法内,后面要跟上要抛出异常类的对象
    - throws 在修饰方法上,告诉调用者,此方法可能会抛出异常,后面跟上可能要抛出的异常类名

  • throw:手动抛出异常

  • throws:声明可能要抛出的异常,提示方法调用者

三.自定义异常

  • 常见异常:RuntimeException,IOException,SQLException,Cla’s’sNotFoundException
  • 自定义异常
    - Java提供的异常体系,不可能预见所有希望加以报告的错误
  • 自定义异常必须从已有的异常类继承
  • 建立新的异常类型,最简单的方式是然编译器产生默认构造方法
  • 对异常来说,最重要的部分就是它的类名
  • 可以为异常类,定义一个接受字符串参数的构造方法,字符串参数描述异常信息。e.getMessage可以获得打印的信息,或者e.printStackTrance可以获得异常信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

elaot

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

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

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

打赏作者

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

抵扣说明:

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

余额充值