`
草帽当家的
  • 浏览: 24400 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

异常处理的初步认识

阅读更多
       学习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语句后面的语句。
分享到:
评论

相关推荐

    javascript编程异常处理实例小结

    这样asp.net的服务端和客户端异常处理我们就都有了初步的认识。 1、烦人的脚本错误 楼猪经常装13,但是普遍都没有深度。偶然艰难地看懂了一段英文,终于可以深沉地再装一回: When browsing Web pages on the ...

    羌塘坳陷石油地质走廊剖面重磁异常处理模拟及地质解释 (2008年)

    利用“重磁视深度滤波”...结合剖面域内的其它资料对走廊域内几个重要地质问题进行了初步的分析和解释,对羌塘盆地石油地质走廊城内的地层、基底、断裂及火山岩分布有了进一步的认识,为整个羌塘盆地区域地质解释及油

    (PDF) VB.NET程序设计Part1(共有两部分)

    第1章 初步认识VB.NET ; 第2章 VB.NET语言基础 ; 第3章 VB.NET程序设计基础 ; 第4章 控件编程基础 ; 第5章 菜单栏、工具栏、状态栏和对话框 ; 第6章 面向对象的程序设计 ; 第7章 文件操作 ; 第8章 程序设计与异常...

    (PDF)VB.NET程序设计PART2(共有两部分)

    第1章 初步认识VB.NET ; 第2章 VB.NET语言基础 ; 第3章 VB.NET程序设计基础 ; 第4章 控件编程基础 ; 第5章 菜单栏、工具栏、状态栏和对话框 ; 第6章 面向对象的程序设计 ; 第7章 文件操作 ; 第8章 程序设计与异常...

    《零基础学ASP.NET 2.0》第3章 C# 2.0程序设计基础

    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 值...

    C++Builder 6.0设计师之路 pdf版

    1.1 初步认识c++基本功 1.2 类型和表达式 1.3 控制结构 1.4 指针和数组 1.5 函数 1.6 结构和枚举 第2章 如何实现面向对象编程 2.1 类和对象 2.2 友元类和友元函数 2.3 类的继承 2.4 多态和虚函数 第3章 异常处理3.1 ...

    数据挖掘实验报告.docx

    实验内容 R语言初步认识(掌握R程序运行环境) 实验数据预处理。(掌握R语言中数据预处理的使用) 对给定的测试用例数据集,进行以下操作。 1)、加载程序,熟悉各按钮的功能。 2)、熟悉各函数的功能,运行程序,...

    《计算机编程基础》课程教学大纲.docx

    初步认识C#程序开发语言,了解计算型思维。 (二)C#基本语法 20学时 (1)C#程序结构1学时 (2)C#程序及代码格式 1学时 (3)变量与常量1学时 (4)基本数据类型1学时 (5)数据类型的转化2学时 (6)运算符号与...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    全书围绕c++语言的结构来组织,开始章节介绍编程的普通概念,接下来详细介绍C++hh的继承、多态、异常处理以及标准模板库(STL),同时还包含模式和uML的介绍。本书内容系统、全面,给出了大量代码示例、自测练习、编程...

    AIC的Java课程1-6章

     初步认识面向对象编程,Java视一切为对象。  使用输入和输出语句编写简单的Java应用程序。  区分applet与application(浏览器和虚拟机上运行)。  编写简单的applet,并嵌入HTML文档,掌握其...

    《Java程序设计案例教程》课程标准.doc

    " " "及编程技能 " " " "3 "数组和字符串 "掌握数组、字符串运 "讲授、单元实验 "8 " " " "用及编程技能 " " " "4 "异常处理 "了解异常机制,掌握 "讲授、单元实验 "8 " " " "基本异常处理方式 " " " "5 "多线程并发...

    ASP.NET3.5从入门到精通

    7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除数据库 7.2.4 备份数据库 7.2.5 还原数据库 7.2.6 创建表 7.2.7 删除表 7.2.8 创建数据库关系图 7.3 ADO.NET 连接SQL 数据库 7.3.1 ADO.NET 基础 7.3.2 ...

    ASP.NET 3.5 开发大全11-15

    7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除数据库 7.2.4 备份数据库 7.2.5 还原数据库 7.2.6 创建表 7.2.7 删除表 7.2.8 创建数据库关系图 7.3 ADO.NET连接SQL数据库 7.3.1 ADO.NET基础 7.3.2 连接...

    ASP.NET 3.5 开发大全

    7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除数据库 7.2.4 备份数据库 7.2.5 还原数据库 7.2.6 创建表 7.2.7 删除表 7.2.8 创建数据库关系图 7.3 ADO.NET连接SQL数据库 7.3.1 ADO.NET基础 7.3.2 连接...

    ASP.NET 3.5 开发大全1-5

    7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除数据库 7.2.4 备份数据库 7.2.5 还原数据库 7.2.6 创建表 7.2.7 删除表 7.2.8 创建数据库关系图 7.3 ADO.NET连接SQL数据库 7.3.1 ADO.NET基础 7.3.2 连接...

    ASP.NET 3.5 开发大全word课件

    7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除数据库 7.2.4 备份数据库 7.2.5 还原数据库 7.2.6 创建表 7.2.7 删除表 7.2.8 创建数据库关系图 7.3 ADO.NET连接SQL数据库 7.3.1 ADO.NET基础 7.3.2 连接...

    ASPNET35开发大全第一章

    7.2.1 初步认识SQL Server 2005 7.2.2 创建数据库 7.2.3 删除数据库 7.2.4 备份数据库 7.2.5 还原数据库 7.2.6 创建表 7.2.7 删除表 7.2.8 创建数据库关系图 7.3 ADO.NET连接SQL数据库 7.3.1 ADO.NET基础 7.3.2 连接...

    Delphi7.完美经典

    8-1 异常处理存在的目的 8-2 Object Pascal异常的种类 8-2-1 Delphi内建的异常类 8-2-2 自定义异常类 8-3 触发异常的方法 8-3-1 由程序系统自动触发 8-3-2 使用Raise指令触发 8-4 处理异常情况 8-4-1 try…...

Global site tag (gtag.js) - Google Analytics