Java异常详解

异常
Java的异常(Exception)又称为例外,是一个在程序执行期间发生的事件,它中断正在执行的程序的正常指令流。为了能够及时有效地处理程序中的运行错误,必须使用异常类。
异常的类型
在Java中的异常类型都是内置类java.lang.Throwable类的子类,即Throwable位于异常类层次结构的顶层,其下有两个异常分类Exception(异常)和Error(错误),Exception类有分为运行时异常(不检查异常,Unchecked Exception)和非运行时异常(检查异常,Checked Exception)
异常处理语句(四种)

  1. try catch语句
  2. try catch finally语句
    其格式:try{
    逻辑程序块;
    }catch(Exceptiontype1 e){
    处理代码块1;
    } catch(Exceptiontype1 e){
    处理代码块2;
    Throw(e);//抛出异常
    }finally{
    释放资源代码块;
    }
    把可能发生异常的语句封装到try语句块中,用以捕获可能发生的异常。如果try语句发生异常,那么一个相应的异常对象就会被抛出,然后catch语句就会根据所抛出的异常对象类型进行捕获,并处理,此时程序将跳过try语句中剩余的语句,转到catch语句块的中。如果try语句块中没有异常发生,那么try块正常结束,其后catch语句被跳过。以上格式无论是否发生异常,finally语句块中的代码都会被执行。
  3. thorws声明异常
    当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部声明这个异常,以便将该异常传递到方法的外部进行处理。
    其格式:
    returntype method_name(paramList)throws Exception1,Exception2,…{
    }
    在编写继承代码时要注意,子类在覆盖父类带throws子句的方法时,子类的方法声明中的throws子句不能出现父类对应方法的throws子句中没有的异常类型,因此throws子句可以限制子类的行为,也就是说,子类方法抛出的异常不会超过父类定义的范围。
  4. thorw 抛出异常
    throw语句用来直接抛出一个异常
    其格式:
    throw ExceptionObject;
    当throw语句执行时,它后面的语句将不执行,此时程序转向调用程序,寻找与之相匹配的catch语句,执行相应的异常处理程序。如果没有找到,则再转向上一层的调用程序。这样逐层向上,直到最外层的异常处理程序中止程序并打印出调用栈情况。
    Throws关键字与throw关键字的区别
  5. throws用来声明一个方法可能抛出的所有异常信息,throw则是指抛出的一个具体的异常类型
  6. 通常在一个方法(类)的声明处通过throws声明方法(类)可能抛出的异常信息,而在方法(类)内部通过throw声明一个具体的异常信息。
  7. throws通常不用显示地捕获异常,可由系统自动将所有捕获的异常信息抛给上级方法;throw则需要用户自己捕获相关的异常,而后再对其进行相关包装,最后将包装后的异常信息抛出。

自定义异常
自定义异常类必须继承现有的Exception类或其子类来创建。
其语法:
<自定义异常名>
一般将自定义的异常类的类名命名为XXXException
自定义异常类一般含有两个构造方法,一个是无参的默认构造方法,另一个构造方法以字符串形式接收一个定制的异常消息,并将该消息传递给超类的构造方法

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值