Java中异常的分类

下面介绍几种常见的异常类型,便于在出错时对程序进行查错:

(1)Exception    各种异常的根类

如果你不知道将发生的异常集体属于哪,而可以肯定种这个地方会出现异常时,可以把异常类型定义为Exception。

(2)ArithmeticException     算数运算错误异常

这个异常是在算数运算时经常遇到的,常见的情况是除数为0时抛出的异常。

(3)ArrayIndexOfOutBoundsException    数组下标越界

编程时要记住Java数组下标是从0开始的,数组下标最大值为数组长度减1,如arr[10],最后一个数组元素是arr[9],如果写成arr[10]就会出现ArrayIndexOfOutBoundsException异常。

(4)NullPointException    空指针异常

这个异常是针对调用未经初始化或未定义的对象抛出的异常。

(5)ClassNotFoundException   不能加载所需的类

在java文件编译后,可能是由于需要把.class文件移到了其他的文件夹,此时引用这个.class文件要注意修改其路径,否则会抛出ClassNotFoundException异常。

(6)InputMismatchException    输入的数据类型与所需类型不匹配异常

比如你需要int类型,但是通过输入框得到的是String类型,就会抛出InputMismatchException异常。

(7)IllegalArgumentException   方法接受非法参数

这个是传入方法中的参数类型不正确,如方法plus(int a,int b),调用时写成a.plus(1,a)就会出现

IllegalArgumentException异常。

(8)NumberFormatException    字符串转换成数字异常

在数据类型强制转换时出现的异常,字符串“123”转换成数字123不会出现异常,但是字符串“[email protected]”转换成int类型就会抛出ClassCastException异常。

这些是常见的RunTimeException(运行时异常),也就是说,这些异常不需要强制声明会抛出,或者强制捕捉的异常。

举两个例子

程序出了那种异常JVM就会抛出相应的异常 比如代码:ArrayIndexOutOfBoundsException  public void demo1(){  try{  int a = 10/0;  }catch(ArithmeticException ae){  System.out.println(“算术运算异常:”+ae.getMessage());   }catch(Exception e){  System.out.println(“其他异常”+e.getMessage());   }  }public void demo2(){  String strList[] = {"a","b","c"};  try{  String str = strList[4].toString();  }catch(ArrayIndexOutOfBoundsException ae){  System.out.println(“数组下标越界:”+ae.getMessage());   }catch(Exception e){  System.out.println(“其他异常”+e.getMessage());   }  } 

总之Exception是所有异常的父类.如果你出现的异常被他的子类捕捉了,他就不会再捕捉比如demo2()方法如果是出现了ArrayIndexOutOfBoundsException Exception就不会捕捉了! 那么为什么要捕捉多次呢?因为ArrayIndexOutOfBoundsException只是数组下标越界的异常,所以它比Exception更的仔细,更能说明异常的原因! 如果不是出现ArrayIndexOutOfBoundsException则Exception就会来捕捉

所有异常,都继承自java.lang.Throwable类。Throwable有两个直接子类,Error类和Exception类。ExceptionException则可使从任何标准Java库的类方法,自己的方法以及运行时任何异常中抛出来的基类型。异常可分为执行异常(RuntimeException)和检查异常(Checked Exceptions)两种RuntimeExceptionRuntimeException在默认情况下会得到自动处理。所以通常用不着捕获RuntimeException,但在自己的封装里,也许仍然要选择抛出一部分RuntimeException。RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。
时间: 2024-10-08 09:04:19

Java中异常的分类的相关文章

《java中异常和错误》

异常和错误的区别. 异常: 在Java中程序的错误主要是语法错误和语义错误,一个程序在编译和运行时出现的错误我们统一称之为异常,它是VM(虚拟机)通知你的一种方式,通过这种方式,VM让你知道,你(开发人员)已经犯了个错误,现在有一个机会来修改它.Java中使用异常类来表示异常,不同的异常类代表了不同的异常.但是在Java中所有的异常都有一个基类,叫做Exception. 错误:它指的是一个合理的应用程序不能截获的严重的问题.大多数都是反常的情况.错误是VM的一个故障(虽然它可以是任何系统级的服务

[转载]Java中异常的捕获顺序(多个catch)

http://blog.sina.com.cn/s/blog_6b022bc60101cdbv.html [转载]Java中异常的捕获顺序(多个catch) (2012-11-05 09:47:28) 转载▼ 标签: 转载 分类: 转载 原文地址:Java中异常的捕获顺序(多个catch)作者:leesa Java代码 import java.io.IOException; public class ExceptionTryCatchTest { public void doSomething(

16 Java中异常的处理

JavaSE 基础之十六 16 Java中异常的处理 ① 异常的概念及分类 1. 异常的概念 异常指的是在运行期间出现的错误.(程序开始执行,在执行期内出现的问题.出现异常后要关注异常的类型以及异常出现的行号) 在Java中,Java的异常是Java提供的用于处理程序错误的一种机制. 异常处理机制:一旦异常发生以后,使用异常处理机制让程序不会直接中断或者影响虚拟机运行. 2.异常的分类 根基类:Throwable 子类:Exception.Error Exception: 用户的错误.或者程序无

java中异常注意的细节1

/* public class Test{ public static void main(String[] args){ int i=0; try{ func();//区别就是该函数抛出的异常被封装了,外界不知道到底会不会发生该异常 System.out.println("i = " + i++);//所以这句话是有机会执行的 }catch(Exception e){ System.out.println("i = " + i++); } } static voi

java中异常注意问题(发生在多态是的异常问题)

/* 异常的注意事项: 1,子类在覆盖父类方法时,父类的方法如果抛出了异常,那么子类的方法只能抛出父类的异常或者该异常的子类. 2,如果父类抛出多个异常,那么子类只能抛出父类异常的子集. 简单说:子类覆盖父类,只能抛出父类的异常或者子类或者子集. 注意:如果父类的方法没有抛出异常,那么子类覆盖时绝对不能抛.子类不能抛出比父类多的异常.就只能try...catch */ class A extends Exception{ A(String msg){ super(msg); } } class

java中异常注意的细节2

class A extends Exception{ A(){ super(); } A(String msg){ super(msg); } } class B extends A{ B(){ super(); } B(String msg){ super(msg); } } public class Test{ public static void main(String[] args){ try{ throw new B(); }catch(A e){ System.out.println

八、java中异常机制

一.为什么要有异常处理机制? java中的异常处理机制简单的讲就是try..catch..finally的使用. 程序难免会出现错误, 如果没有异常处理机制, 那么程序员在编写代码的时候就必须检查特定的结果, 并在程序的很多地方去处理它. 有了异常处理机制后,就不必在每个方法调用处都检查, 只需要用try包裹住可能发生异常的代码段, 这样做的好处是: 1.降低了代码的复杂度,正如上面所说的,不需要每个方法调用处都去检查: 2.将“描述正常情况下应该做什么事情”和“如果出了错怎么办” 的逻辑分开:

Java NIO之Java中的IO分类

前言 前面两篇文章(Java NIO之理解I/O模型(一).Java NIO之理解I/O模型(二))介绍了,IO的机制,以及几种IO模型的内容,还有涉及到的设计模式.这次要写一些更贴近实际一些的内容了,终于要说到了Java中的各种IO了.我也是边学边理解,有写的不对的地方,欢迎小伙伴们指出和补充. Java中的IO分类 BIO BIO是指 Blocking IO 在JDK1.0的时候就引入了,直到JDK1.4一直都是Java中唯一的IO方式.它的主要实现方式就是,一个线程执行一个请求,如果请求数

java中异常分哪些种类:

java中异常分哪些种类: 一.Error .Runtime Exception 运行时异常 运行异常类对应于编译错误,它是指Java程序在运行时产生的由解释器引发的各种异常.运行异常可能出现在任何地方,且出现频率很高,因此为了避免巨大的系统资源开销,编译器不对异常进行检查.所以Java语言中的运行异常不一定被捕获.出现运行错误往往表示代码有错误,如:算数异常(如被0除).下标异常(如数组越界)等. 算术异常类:ArithmeticExecption 空指针异常类:NullPointerExce