异常分析

1.异常是指在程序运行时出现的非正常事件.比如说:文件无法打开或创建以及空对象的操作。由于异常事件会导致错误,所以一个好的程序必须要对这些异常进行处理,来增加程序的“健壮性”。

2.在C语言中,为了处理异常,通常是通过调用函数通过返回值来处理的。而Java,多采用异常处理机制,这样能使程序更加易读,易懂,以及维护。

3.Throwable和throw以及throw三个关键字的区别:

   Throwable是所有异常类的超类(父类)。它的直接子类有Exception和Error.Error类及其子类用来处理程序中的异常时,一般是与硬件有关,不需要程序员去处理,Exception类及其子类用来处理异常时,一般是要我们程序员自己捕获并处理的。throw用于抛出异常,throws用于声明有异常抛出。

抛出异常的一般格式为:throw 异常对象名;或者,throw new 异常类名();

两种形式本质是一样的,但前一种需要先构造异常对象,后一只在抛出异常时才创建异常对象,所以经常使用第二种形式。当程序中出现throws出现时,说明该类可能发生异常,这就需要对异常进行处理,处理异常的方法有两种:一种是通过try-catch-finally处理(需要程序员自己操作),还有一种是将异常交给java虚拟机处理。

4.我写个例子来解释下异常是怎么处理的

 
public class throwsException{
	 public static void main(String [] args){
		 try{
		 chang(); 
	 }catch(Exception e){
		 System.out.println("这是在main方法中捕获的异常");}
	 }
	 public static void chang() throws Exception{//要声明抛出异常
		 Random random=new Random();
		 int a=random.nextInt(100);
		 try{
			 if(a==70){
				 System.out.println(a);
			 }
			 else{
				 throw new Exception();//抛出异常
			 }
		 }catch(Exception e){
			 System.out.println("这是在chang()异常");}
		 }
}
 

   因为chang方法中通过关键字(throws)声明有异常抛出,所以必须在主函数中强制捕获异常,如果没写try-catch语句,则会报错。

当生成的随机数不等于70时,会执行throw new Excetion()语句,throw语句将异常抛给catch。

5.try-catch-finally中,把会产生异常的语句写在try程序块中,可以有多个catch语句,catch语句是多选的,多个catch语句中的异常参数类型必须各不相同,如果try中发生了异常,系统将会从上到下依次查找catch语句中是否有异常参数类型与之匹配,catch中最后一个异常参数类型是所有上面catch语句异常参数类型的父类,如匹配,就进入该catch语句,如果都没有匹配,则进入finally语句。finally语句是资源保护快,不管系统是否找到与之匹配的catcch语句,finally中的语句都要执行。

6.常见的异常:

运行时的异常:

java.lang.ArrayIndexOutofBoundsExcetion(数组下标越界异常)

java.lang.ArithmeticException:/ by zero(零做除数异常)

java.lang.NullPointerException(空对象)

像这类异常编译是可以通过的,它是发生在运行中。如果发生这类异常,我们可以自己根据信息来改进程序。

检查型异常:

除了运行时的异常,其余都是检查型异常。比如说:从键盘中读入一个字符。如果你没有强制处理这类异常,将不能通过编译,它会提示以下信息:hasCheckException.java 4 未报告的错误java.io.Exception

7.自定义异常

如果系统预定义的类不能满足编程要求,我们可以自己定义异常类。自己定义的异常类必须是Throwable的直接或间接子类,不过一般情况是Exception的子类。自定义异常类会自动继承父类中可以继承的方法和属性,一般情况下,它需要声明两个构造方法:一个是不带参数的方法,一个是以字符串为参数,作为本异常类的具体信息:

我用一个例子说明下:

class MyException extends Exception{
	MyException(){
		super();
	}
	MyException(String s){
		super(s);
	}
}
 public class useMyException{
	public static void main(String [] args){
		try{
			throw new MyException("这是我自己定义的异常类");
		} catch(MyException e){
			System.out.println("异常信息:"+e.toString());
		}
	}
}

 

 
  

 我的心得体会:在学了异常类之后,让我对异常有了更多的理解,这个异常机制始终贯穿在我们编程中,当我们遇到异常时,不要太过于紧张,我们可以通过提示信息自己改正错误。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值