您的位置:首页 > 编程语言 > Java开发

浅谈我对Java异常类的了解

2014-12-22 22:54 274 查看
--

相信大家在学习Java 程序的时候,总会遇见一些问题,这些问题导致了异常的发生,随之就有了异常的处理。

首先,什么是异常 ?  其实异常就是对问题的描述,将问题封装成对象,当问题出现时,就会调用该对象,这就是所谓的异常。

紧接着,因为异常的出现,导致程序有问题,既然知道了问题,那么异常处理就来了。 其实就是制定一系列的方针,通过这些方针,来处理问题。

其实,无外乎就是 : 遇见问题,处理问题 —— 个人见解。

下面讲解下体系:

首先,在 java.lang 包下有一个名为  
Throwable
 类, 
Throwable
类是 Java 语言中所有错误或异常的超类。

Throwable 派系
下有2个小弟( 子类 ),分别是:Error , Exception

分析Error 和 Exception 的区别,举个医生和病人的例子,假设我是医生:

                  Error就像是绝症,我看见Error病人时,我只能说你爱干嘛就干嘛去吧。 ( 无能为力 )

                  Exception是小感冒,我看见Exception病人时,我可以帮它开点药,打下针。( 我还有能力 )

既然Error无能为力,我只能找Exception下手了, 嘿嘿。

下面分析下 Exception 异常,Exception 异常大致分为2种:  编译时期的异常 ( Exception / Checked Exception )

                                                                                                           运行时期的异常 ( RuntimeException  )

小程序展示下异常:

public class Test {
public static void main(String[] args) {
int[] arr = new int[5];
System.out.println(arr[5]);
/*
运行上面语句的时候,就会弹出以下的错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at Test.main(Test.java:8)
*/
}
}


这就是所谓的异常了,对于异常的出现,为了避免异常,就有了异常的处理机制。

异常处理机制分2种:抛出异常 , 捕获异常。

首先示范抛出异常 :

public void throwsMethod() throws FileNotFoundException
{
FileInputStream f = new FileInputStream("1.txt");
/*
Test.java:12: 错误: 未报告的异常错误FileNotFoundException; 必须对其进行捕获或声明以便抛出
FileInputStream f = new FileInputStream("1.txt");
^
1 个错误
*/
}


抛出异常: 就是在方法名后 使用关键  throws 修饰你的异常,假设你的异常是FileNotFoundException,

                     那么,就会写成 throws FileNotFoundException 来声明异常,

下面示范捕获异常:

public static void tryCathMethod()
{
try
{
FileInputStream f = new FileInputStream("1.txt");
}
catch(IOException e)
{
new RuntimeException("文件不存在!");
}

}


捕获异常:通过 try...catch , 可以捕获到当前try代码块可能会引发的异常,并通过catch定义一系列方针进行处理。 

手动抛出异常 throw :

我们可以通过关键字 throw  手动的抛出一个异常信息,下面示范 throw :

public static int throwMethod(int a, int b)
{
if(b==0)
throw new ArithmeticException("被除数为0啦!");
return a/b;
/*
Exception in thread "main" java.lang.ArithmeticException: 被除数为0啦!
at Test.throwMethod(Test.java:13)
at Test.main(Test.java:8)
*/
}


throw 与 throws 的区别:

  throw: 是直接抛出一个指定的异常对象,且可以自定义异常信息内容。 

                 throw 只能在方法内使用,后面跟的是异常对象,例 :  throw new  Exception("自定义信息");

                 RuntimeException类及其子类,不用声明,直接可以通过throw 抛出异常对象。

                 Exception 需要声明,才可以通过throw 抛出异常对象。

throws:是用于声明一个指定的异常类,以便抛出,不可定义异常信息内容。 ( 可以理解为标记 )

                 throws 只能在方法外使用,后面跟的是异常类, 例: throws Exception

关于异常的说明,告一段落。  下面展示下自定义一个异常。

自定义异常,即创建一个类,并且继承异常 Exception ,那么这个类,就是异常类。

示例:

public class ExceptionTest extends Exception {

ExceptionTest() {
super();
}

ExceptionTest(String str) {
super(str);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: