java异常处理的学习笔记

程序在执行时,如果异常没有处理,程序就会被迫终止,异常处理能使程序可以处理预期之外的结果,使程序能顺利运行。

异常可大致分为三种:系统错误、异常、运行时异常。

系统错误用Error类表示,Error描述的是内部系统错误,而这种错误一般很少发生,但一旦发生,除了通知用户以及尽量委稳妥的关闭程序外,基本没什么能做的;

异常用Exception类表示,Exception描述的是有程序和外部环境所引起的错误,这些异常能被捕获和处理,例如引用一个不存在的类,打开一个不存在的文件等;

运行时异常用RuntimeException,RuntimeException描述的是程序的设计错误,例如除数为0,数据类型错误,数组越界等。

处理异常通常有三个操作:声明(由throws引导),抛出(由throw引导),捕获(由catch引导)一个异常。

声明异常:每个方法都必须声明他可能抛出的必捡异常的类型,这称为声明异常,每个方法都可能发生异常,但免检异常是不需要声明的,而必检则必须在方法头声明

eg:

public void Method() throw Exception1,Exception2,Exception3....,ExceptionN;

抛出异常:检测到错误的程序的可以创建一个合适的异常类型的实例并抛出它,这就称为抛出一个异常

eg:

throw new ArithmeticException("Wrong Argument"):

捕获异常:在抛出一个异常后,我们可以用try-catch语句捕获和处理它,在try语句中每抛出一个异常,程序就会跳过try中后面的语句,然后开始查找处理这个异常的代码的过程,这个过程称为异常处理器;找到一个异常后直接查找处理异常的方法,从第一个catch查到最后一个catch,查到就执行,若没有catch能捕获这个异常,程序将停止。

eg;

try{
	statements;
}
catch(Exception1 ex1){
	handler for exception1;
}
catch(Exception2 ex2){
	handler for exception2;
}
......
catch(ExceptionN exN){
	handler for exceptionN;
}

一个通用的异常可以派生出各种异常类,如果一个异常能被父类catch捕获,那他就能被他的子类catch捕获,故catch块中捕获异常是有顺序的,如果父类的catch块是放在子类catch块前面的,将出现编译错误。

从JDK7开始能使用新的多捕获特征来简化代码,eg:

catch(Exception1 | EXception2 | Exception3 ......| ExceptionN){

}

在java.lang.Throwable类中提供了一些方法能显示异常的信息,eg:

getMessage():放回描述给异常对象的信息,例如如果除数为0,则返回/ by zero

toString():返回三个字符串的链接:异常类的全名 + ": " + getMessage()方法

printStackTrace():在控制台上打印Throwable对象和它的调用堆栈(内存,即c语言中地址)信息

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜飞霜

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值