Java的异常

从继承关系可知:Throwable 是异常体系的根,它继承自Object 。Throwable 有两个体系: Error 和Exception.

Error表示严重的错误,程序对此一般无能为力,例如:

  • OutOfMemoryError :内存耗尽
  • NoClassDefFoundError :无法加载某个Class
  • StackOverflowError :虚拟机栈溢出

 Exception则是运行时的错误,它可以被捕获并处理。某些异常是应用程序逻辑处理的一部分,应该捕获并处理。
例如: 

  • NumberFormatException:数值类型的格式错误
  • FileNotFoundException:未找到文件
  • SocketException :读取网络失败

        还有一些异常是程序逻辑编写不对造成的, 应该修复程序本身。例如:

  • NullPointerException: 对某个nu1l 的对象调用方法或字段
  • IndexOutOfBoundsException  :数组索引越界

Exception又分为两大类:

  • RuntimeException以及它的子类;
  • 非RuntimeException(包括( IOException 、ReflectiveOperationException等)

 异常的捕获:

        捕获异常使用try...catch 语句,把可能发生异常的代码放到try {...} 中,然后使用catch 捕获对应的Exception及好类

比如:

public static void main(String[] args) {
	try (Scanner in = new Scanner(System.in)) {
		//获取输入时,可能产生InputMismatchException
			
		// 输入非法的内容: a
		// JVM创建一个 InputMismatchException类型的异常对象,并抛出
		//程序会从try块退出

		int n1 = in.nextInt();
			
		int n2 = in.nextInt();
			
		System.out.printf("%d÷%d=%d",n1,n2,n1/n2);

	}catch(NullPointerException ex) {

		System.out.println("哎呦,空指针了!");

	}catch(InputMismatchException ex) {

		System.out.println("哎呦,输入错误了!");

	}catch(ArithmeticException ex) {

		System.out.println("哎呦,计算错误了!");

	}
}

当输入a时,产生InputMismatchException,输出:哎呦,输入错误了!

当n2输入0时,则产生ArithmeticException,输出:哎呦,计算错误了!

小结

  • Java使用异常来表示错误,并通过try ... catch 捕获异常;
  • Java的异常是class(类) ,并且从Throwable 继承;
  • Error是无需捕获的严重错误,Exception 是应该捕获的可处理的错误;
  • RuntimeException无需强制捕获,非RuntimeException (Checked Exception)需强制捕获,或者用throws 声明;
  • 不推荐捕获了异常但不进行任何处理。
     
  • 37
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值