浅谈Java中的异常

原创 2016年05月31日 15:00:58

1.什么是异常?

异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。Java异常类层次结构如下图所示:

      

Error:是程序无法处理的错误,大多数错误与代码编写者执行的操作无关,而是与JVM有关,如VirtualMachineError(虚拟机错误)。OutOfMemoryError(内存溢出)包括三种情况:

  1)PermGen Space。原因是程序中使用了大量的jar或class,使java虚拟机装载类的空间不够

  2)Java heap space。原因是java虚拟机创建的对象太多,在进行垃圾回收时,虚拟机分配的到堆内存空间已经用满了。

  3)unable to create new nativethread。错误在Java线程个数很多的情况下容易发生。

StackOverflowError(堆栈溢出错误)。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。

这些错误发生时,Java虚拟机(JVM)一般会选择线程终止。

Exception:是程序本身可以处理的异常,分为以下两种:

RuntimeException(运行时异常)。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用(NullPointerException)、除数为零(ArithmeticException)或数组越界(ArrayIndexOutOfBoundException)。这些异常是unchecked exceptions,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。

非运行时异常或编译异常RuntimeException以外的其余的异常。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义checked exceptions

2.怎么处理异常?

 处理异常的方式大致有两种:

   1)在发生异常的地方直接处理;

   2)将异常抛还给调用者,调用者捕获异常之后处理异常。

捕获异常的方式如下:

                try {  
			methodName();// 可能会发生异常的程序代码  
		} catch (Exception e) { 
			e.printStackTrace(); // 捕获并处理try抛出的异常类型 
		}finally { // 无论是否发生异常,都将执行的语句块
		} 



当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。在以下4种特殊情况下,finally块不会被执行:(1)在finally语句块中发生了异常。(2)在前面的代码中用了System.exit()退出程序。(3)程序所在的线程死亡。(4)关闭CPU。

抛出异常的方式如下:

 public String methodName() throws Exception1,Exception2,..,ExceptionN{ 
   //方法体 
}  





版权声明:本文为博主原创文章,未经博主允许不得转载。

浅谈Java中的错误和异常(Error and Exception)

面试中经常会被问到error和exception的区别,在这边稍微

浅谈.net和Java的异常类型设计

最近在自学Java,看到Java的检查型异常设计时,心中不免有些疑惑。疑惑使用检查型异常的必要性。注:本人现在从事的.net开发。C#在设计上借鉴了Java,但是,C# 并没有引入所谓的检查型异常。 ...

浅谈Java中的异常

什么是异常呢? 就是程序运行过程中,遇到了问题,这就叫异常。 异常的体系  Throwable 其实应该分三种 Error 通常出现重大问题如:服务器宕机数据库崩溃等。不编写针对代码对其处理。 ...

浅谈我对Java异常类的了解

相信大家在学习Java 程序的时候,总会遇见一些问题,这些问题导致了异常的发生,随之就有了异常的处理。 首先,什么是异常 ?  其实异常就是对问题的描述,将问题封装成对象,当问题出现时,就会调用该对象...

浅谈Java异常处理机制

一、众所周知,当我们在编写程序或者运行程序时,经常出现难以预料的各种状况,这就是异常。 在Java的API中将throwable类的众多子类用来描述各种不同的异常。 通常情况下,我们将throwa...
  • FroSro
  • FroSro
  • 2016年10月18日 18:47
  • 92

【java异常】浅谈

一. 异常的定义 在《java编程思想》中这样定义 异常:阻止当前方法或作用域继续执行的问题。虽然java中有异常处理机制,但是要明确一点,决不应该用"正常"的态度来看待异常。绝对一点说异常就是某种...

黑马程序员_浅谈Java当中的异常处理机制

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ ----------------------- andro...

浅谈为什么java命令运行class文件出现异常

摘要  相信每一个初学者学习Java时,刚开始练习编程Java都会写一个HelloWord程序,然后会按照书本上那样用命令行去编译,解释Java程序,或许当时你执行成功了;可是当你进一步学习更多的知识...

浅谈java异常[Exception]

从异常角度来说这样严格的程序确实是万无一失,所有的异常都能捕获。但是站在编程人员的角度,万一这个程序出错了我们该如何分辨是到底是那引起的呢,io还是jdbc...所以,这种写法很值得当做一个反例。大家...

浅谈Java异常处理

为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”。笔者在初学java时也是这样认为的。如何在一个多层的j2ee...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈Java中的异常
举报原因:
原因补充:

(最多只允许输入30个字)