浅谈我对Java异常类的了解

--


相信大家在学习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);
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值