问题1:上面的程序能否编译通过?并说明理由。
解答:能编译通过。分析:按照一般常理,定义doSomething方法是定义了ArithmeticException异常,在main方法里 里面调用了该方法。那么应当继续抛出或者捕获一下。但是ArithmeticException异常是继承RuntimeException运行时异常。 java里面异常分为两大类:checkedexception(检查异常)和unchecked exception(未检
查异常),对于未检查异常也叫RuntimeException(运行时异常),对于运行时异常,java编译器不要求你一定要把它捕获或者一定要继续抛出,但是对checkedexception(检查异常)要求你必须要在方法里面或者捕获或者继续抛出.
问题2:上面的程序将ArithmeticException改为IOException能否编译通过?并说明理由。
解答:不能编译通过。分析:IOException extends Exception 是属于checked exception,必须进行处理,或者必须捕获或者必须抛出
总结:java中异常分为两类:checked exception(检查异常)和unchecked exception(未检查异常),对于未检查异常也叫RuntimeException(运行时异常).
对未检查的异常(unchecked exception )的几种处理方式:
1、捕获
2、继续抛出
3、不处理
对检查的异常(checked exception,除了RuntimeException,其他的异常都是checked exception )的几种处理方式:
1、继续抛出,消极的方法,一直可以抛到java虚拟机来处理
2、用try...catch捕获
注意,对于检查的异常必须处理,或者必须捕获或者必须抛出
************************************************************************************************************************************************
异常处理(Exception)
1.异常:程序再运行期间发生的不正常事件,它会打断指令的正常流程。
异常都是发生在程序的运行期,编译出现的问题叫语法错误。
2.异常的处理机制:
1)当程序再运行过程中出现了异常,JVM自动创建一个该类型的异常对象。同时把这个异常对象交给运行时系统。(抛出异常)
2)运行时系统接受到一个异常对象时,它会再产生异常的代码附近查找相应的处理方式。
3)异常的处理方式有两种:
1.捕获并处理:在异常的代码附近显示用try/catch进行处理(不合理),运行时系统捕获后会查询相应的catch处理块,再catch处理块中对该异常进行处理。
2.查看发生异常的方法是否有向上声明异常,有向上声明,向上级查询处理语句,如果没有向上声明,JVM中断程序的运行并处理。用throws向外声明(合理的处理方法)
3.异常的分类:
java.lang.Throwable
|-- Error错误:JVM内部的严重问题。无法恢复。程序人员不用处理。
|--Exception异常:普通的问题。通过合理的处理,程序还可以回到正常执行流程。要求编程人员要进行处理。
|--RuntimeException:也叫非受检异常(unchecked exception).这类异常是编程人员的逻辑问题。应该承担责任。Java编译器不进行强制要求处理。 也就是说,这类异常再程序中,可以进行处理,也可以不处理。
|--非RuntimeException:也叫受检异常(checked exception).这类异常是由一些外部的偶然因素所引起的。Java编译器强制要求处理。也就是说,程序必须进行对这类异常进行处理。
4.常见异常:
1)非受检的:NullPointerException,ClassCastException,ArrayIndexsOutOfBoundsException,ArithmeticException(算术异常,除0溢出)
2)受检:Exception,FileNotFoundException,IOException,SQLException.
5.异常处理的两种方式:
1).显示用try/catch进行处理(不合理)
try{
//可能会出现异常的代码段;
}catch(异常类型1 变量名){ //处理制定类型的异常
//对该类型异常的处理代码段;
e.printStackTrace();
}catch(){
}[finally{
//无论是否发生异常都要执行的代码段;
//经常用来清理资源
}]
2).向上声明:用throws关键字,向外声明(合理的处理方法)
声明本方法可能会抛出的异常列表。
...方法名(参数列表) throws 异常类型1,异常类型2
向上声明是告诉本方法的调用者,在使用本方法时,应该对这些异常进行处理。
6.手动抛出一个异常:当程序逻辑不符合期望时,要中止后面代码的执行时。
在方法的代码段中,可以使用throw关键字手动抛出一个异常。
注意:如果手动抛出的是受检异常,那么本方法必须进行处理(应该采用向上声明这个异常);如果手动抛出的是非受检异常,那么可以进行处理,也可以不处理。
7.自定义异常:当需要一些跟特定业务相关的异常信息类时。
可以继承继承Exception来定义一个受检异常。也可以继承自RuntimeException或其子类来定义一个非受检异常。
8.异常概括:一个图两种处理方式.
9.异常实践:
观察抛出的异常的名字和行号很重要。
应该捕获和处理那些已知如何处理的异常,传递那些不知如何处理的异常。
尽量减少try语句块的体积。
for(int i=1;i<=1000;i++){
try{
...
}catch(...)
}不合理
尽量减少try-catch语句的嵌套。
在catch块代码段中,应该打印除该异常的堆栈跟踪信息以方便调试。
使用 throws关键字来声明方法可能会抛出的异常
throws可以声明方法可能会抛出一个或多个异常,异常之间用','隔开
如果声明的可能会抛出的异常是非受检的,该方法的调用者可以处理也可以不处理。
如果声明的可能会抛出的异常是受检的,该方法的调用者必须进行处理。
用throw关键字来手动抛出一个异常,
如果手动抛出的异常是一个受检异常,那么必须进行处理
处理方式有两种:
1.显示用try/catch进行处理(不合理)
2.用throws向外声明(合理的处理方法)
应捕获和处理那些已知如何处理的异常,而传递那些不知如何处理的异常。
分享到:
相关推荐
总结来说,"tomcat健康检查脚本文件异常发送邮件通知.rar"提供的解决方案有效地提升了Tomcat服务器的管理水平,通过自动化监测和报警机制,使运维人员能在问题发生时迅速做出响应,从而提高系统的整体可用性和用户...
Java 异常机制包括 Error、Exception、检查异常、运行时异常、异常处理和 throws 关键字等几个方面。 Error 是 Java 异常机制中的基类,表示编译时或者系统错误,例如虚拟机相关的错误、系统崩溃等。Error 无法恢复...
Java编程中,检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)是两种不同的异常类型,对于程序员来说,了解它们的区别和使用场景至关重要。本文将详细介绍检查型异常和非检查型异常的概念、...
在IT行业中,BOM(Bill of Materials)通常指的是文件或软件的字节顺序标记,它在Unicode编码系统中...无论是个人用户还是企业团队,理解和掌握BOM异常检查的相关知识以及如何使用相关工具,都是提升IT工作质量的关键。
异常可以分为两大类:已检查异常(checked exceptions)和未检查异常(unchecked exceptions)。已检查异常是那些在编译期间需要显式处理的异常,例如`IOException`,而未检查异常通常是编程错误,如空指针异常`...
《宫颈癌检查异常转诊工作制度》是针对宫颈癌筛查过程中发现异常情况的规范化处理流程,旨在确保患者能够及时接受进一步诊断和治疗。这一制度在乡级层面实施,旨在提高宫颈癌的早诊早治率,减少漏诊,降低疾病对女性...
文档“目标达成及异常事件追踪检查办法.docx”主要阐述了如何有效追踪、检查和评估组织内部各部门的目标完成情况以及如何处理和追踪异常事件,旨在确保组织有序运营,达成年度和战略目标。以下是对该文档内容的详细...
当异常发生时,操作系统允许程序有机会检查异常类型并选择自定义的方式来处理它。 在Windows编程环境中,异常处理通常使用`__try`和`__except`关键字来实现。一个`__try`块包含了可能会抛出异常的代码,而`__except...
如果可能,将这些已检查异常转换为更通用的、与业务逻辑相关的已检查异常,或者转化为未检查异常,这样可以降低不同层之间的耦合,提高代码的可维护性。 总的来说,理解并熟练运用Java异常处理机制是编写健壮、可...
本篇文章将深入探讨“ExceptionTest”,并解析检查异常和未检查异常的区别。 首先,我们来看一下“检查异常”(Checked Exception)。这类异常在编译时就已经被检查,也就是说,如果一个方法可能会抛出检查异常,...
- Exception可以进一步分为已检查异常和未检查异常。已检查异常(Checked Exception)是在编译时期强制要求处理的异常,如IOException。未检查异常(Unchecked Exception),也被称为运行时异常,包括...
Java异常体系结构主要分为两大类:检查型异常(Checked Exceptions)和非检查型异常(Unchecked Exceptions)。 #### 检查型异常 这类异常是指编译器要求必须处理的异常。如果一个方法声明抛出此类异常,那么调用...
良好的编程习惯、充分的异常检查和预防措施,以及及时的错误修复,都是提高应用稳定性的关键。 通过以上步骤,开发者可以构建一个完善的全局异常处理机制,提升应用的稳定性和用户体验。在实际项目中,`...
然而,C++的异常处理也存在一些批评,比如它可能导致性能开销,因为编译器必须生成额外的代码来检查异常。此外,不是所有的C++库都支持异常处理,有些库可能选择返回错误码,这就需要开发者在使用时兼顾两种错误处理...
综上所述,"nginx健康检查脚本文件异常发送邮件通知"提供了一套完整的监控和通知机制,可以帮助IT管理员及时发现并解决Nginx服务的问题,从而提高系统的可用性和稳定性。正确配置和使用这个脚本,可以显著提升运维...
Java中的异常分为已检查异常(checked exception)和未检查异常(unchecked exception)。已检查异常需要在方法签名中声明或者通过try-catch块进行捕获和处理,否则编译器会报错。未检查异常通常是RuntimeException...
本文将对C++和Java两种语言的异常处理机制进行深入的比较和分析,探讨它们的相似之处以及不同之处,以帮助开发者更好地理解和应用这两种语言。 首先,异常处理的基本目的是捕获并处理运行时错误,这些错误通常包括...
其中异常类 Exception 又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。 二、异常的捕获和处理 Java ...
Python中的异常处理是编程实践中非常重要的一个概念,它允许开发者优雅地处理程序运行时可能出现的错误,确保程序的稳定性和用户体验。本节将详细介绍Python中的错误和异常,以及如何利用异常处理机制进行程序的错误...