学习java的这段时间里,碰到的异常已经数不胜数,认识的异常却只有两种,碰到最多的异常也是这两种——空指针异常(NullPointerException)与数组越界异常(ArrayIndexOutOfBoundsException)。对于这两种经常跟我们打交道的异常,相信大家已经再熟悉不过了——能让人无限纠结的东西,需要不被熟悉的理由吗?今天算是对异常有了一些初步了解,只是一些基础问题的小总结,以便与大家交流分享。
异常可以分为以下两种:
a checked exception(非运行时异常)
b unchecked exception(Runtime Exception(运行时异常))注:对于这类异常,我们可以不对其进行处理。
对于非运行时异常,处理的方法有两种:
一,try{...}catch(..){...}finally{...},finally语句常常会省略。
当程序无异常时,会执行完try的全部语句,并跳过catch语句去执行finally语句,当程序有异常时,对于它的执行过程,我们先看一组代码:
public class FirstException {
public static void main(String []args){
try{
int a=1;
int b=0;
int c=a/b;
}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("异常处理完毕");
}
}
}
执行结果如下:
java.lang.ArithmeticException: / by zero
at Myfirstexception.FirstException.main(FirstException.java:8)
异常处理完毕
当程序执行到语句c=a/b时,由于分母为零,会产生异常,这时首先会创建一个异常对象,并将该对象赋给catch语句中的Exception e,然后调用e的异常处理法。最后执行finally语句。
值得注意的一点,此时程序会跳过语句c=a/b后面的语句,也就是跳过产生异常的语句后面所有的语句,直接进入catch。
public class FirstException {
public static void main(String []args){
try{
int a=1;
int b=0;
int c=a/b;
System.out.println("该语句被执行?");
System.out.println("该语句被执行?");
}catch(Exception e){
e.printStackTrace();
}finally{
System.out.println("异常处理完毕");
}
}
}
执行结果:
java.lang.ArithmeticException: / by zero
at Myfirstexception.FirstException.main(FirstException.java:8)
异常处理完毕
注意到,此时两条打印语句并没有被执行!
二,方法()+throws Exception{...throw new Exception}
先看一组代码:
public class FirstException {
public void dealwith() throws Exception{
System.out.println("hello!");
throw new Exception();
}
public static void main(String [] args) throws Exception{
FirstException fe=new FirstException();
fe.dealwith();
}
}
执行结果:
hello!
Exception in thread "main" java.lang.Exception
at Myfirstexception.FirstException.dealwith(FirstException.java:21)
at Myfirstexception.FirstException.main(FirstException.java:25)
简单来讲,这种处理方法就是猛烈地向上抛异常。throws跟在方法名后面接一个异常的类名,throw后面接具体的对象。当程序执行时,产生异常的语句把异常抛给调用它的语句去处理,调用语句可以选择用第一种方法处理异常,也可以继续往上抛,如果继续抛下去,异常就会交给虚拟机处理。
注意一下,两种方法的不同之处,抛出异常的方法不会执行异常后面的语句,而try{...}catch(){...}却会执行catch语句后面的语句。
分享到:
相关推荐
这样asp.net的服务端和客户端异常处理我们就都有了初步的认识。 1、烦人的脚本错误 楼猪经常装13,但是普遍都没有深度。偶然艰难地看懂了一段英文,终于可以深沉地再装一回: When browsing Web pages on the ...
5. **异常处理**:DAO实现类应该适当地抛出和捕获异常,以便于上层业务组件能够处理数据访问过程中可能出现的问题。 6. **数据源管理**:DAO通常需要连接池来管理数据库连接,以提高系统的性能和资源利用率。 通过...
6. **异常处理**:C++的异常处理机制允许程序员处理运行时错误,通过try-catch块捕获并处理可能出现的异常,保证程序的健壮性。 7. **标准库的使用**:STL(Standard Template Library)是C++的标准库,包含容器...
### 初步了解和认识大数据 #### 大数据概念 “大数据”(Big Data)作为一个新兴的技术领域,指的是那些超出常规处理能力的数据集。这些数据集不仅庞大而且复杂,传统数据库管理工具和技术难以应对。根据全球知名...
它综合了信噪比(SNR)和干扰功率,反映了信号在经过传播和处理后,与噪声和干扰的相对强度。ISCP低可能意味着存在强干扰或系统内部问题,需要进一步排查和解决。 RTWP,无线发射机工作功率,是指基站发射机实际...
利用“重磁视深度滤波”...结合剖面域内的其它资料对走廊域内几个重要地质问题进行了初步的分析和解释,对羌塘盆地石油地质走廊城内的地层、基底、断裂及火山岩分布有了进一步的认识,为整个羌塘盆地区域地质解释及油
前置处理涉及到数据的初步清理和格式标准化,以确保数据的质量和一致性。中间处理涉及数据的转换和加载,将源数据转化为适合分析的形式。后置处理则包括对数据的最终整理和加载到数据仓库中,以供后续分析使用。 ...
- **异常处理**:代码中使用了`Try...End Try`结构,但未见到具体的异常处理逻辑。在实际开发中,应添加适当的异常捕获和处理代码,以增强程序的健壮性。 - **资源管理**:确保在使用完毕后释放图像资源,避免内存...
在处理完初步数据后,接下来的步骤是数据分析。数据分析需要综合应用物理海洋学知识与数据分析技能,对数据进行深入解读。这包括识别数据中的异常值、评估数据质量以及分析数据趋势。通过这些分析,研究者可以对海洋...
在学习过程中,应着重理解每个概念的实际应用场景,例如如何通过类和对象来抽象现实世界的问题,如何使用异常处理来增强程序的健壮性,以及如何利用多线程提升程序效率。同时,不断通过做题和编写小程序来锻炼解决...
在实际操作中,处理流程一般开始于数据的初步研究和地质背景的深入理解,为后续处理提供方向和依据。 在数据处理中,解析延拓技术起到关键作用,它包括上延和下延两个方向。上延操作能够减少表层干扰的影响,而下延...
异常定位算法常常用于检测和处理网页加载过程中的错误,确保用户体验的顺畅。这可能涉及到错误日志分析、网络请求监控和性能优化等技术。 上一阶段(04.D4-05.A1)的工作重点在于构建基础框架,完善页面功能,以及...
第1章 初步认识VB.NET ; 第2章 VB.NET语言基础 ; 第3章 VB.NET程序设计基础 ; 第4章 控件编程基础 ; 第5章 菜单栏、工具栏、状态栏和对话框 ; 第6章 面向对象的程序设计 ; 第7章 文件操作 ; 第8章 程序设计与异常...
第1章 初步认识VB.NET ; 第2章 VB.NET语言基础 ; 第3章 VB.NET程序设计基础 ; 第4章 控件编程基础 ; 第5章 菜单栏、工具栏、状态栏和对话框 ; 第6章 面向对象的程序设计 ; 第7章 文件操作 ; 第8章 程序设计与异常...
波形显示直观地呈现雷达信号的形状,提供对地下结构的初步认识。预编辑阶段,可以利用编辑工具选择并删除不必要的扫描剖面,保留重要的信息。 需要注意的是,步骤11至14涉及的滤波和处理操作应根据实际数据质量、...
### 微核实验方法的初步探索 #### 实验原理与微核的概念 微核(MicroNucleus,简称MN)是一种在真核生物细胞中独立于主要细胞核外的微型核结构,通常呈现为圆形、椭圆形或其他不规则形状的小核,其直径小于正常...
3.1 初步认识C#语言 25 3.1.1 C#语言的特点 25 3.1.2 C#语言的程序结构 25 3.1.3 C#程序的编译 26 3.1.4 命名空间 26 3.1.5 程序的输入/输出 27 3.1.6 C#的注释 28 3.2 常量和变量 28 3.3 C#的数据类型 29 3.3.1 值...