Java异常(Exception)小例子&知识点【Java学习笔记】

<pre name="code" class="java">/* 
    时间:2014年12月17日10:42:20 
    功能:异常(Exception)处理及try...catch(成对出现) 
    异常:能处理的尽量处理,不能处理的一定要抛出 
    Notice:throw 和 throws 的区别 
*/  
  
import java.io.*;  
  
public class TestEX {  
    public static void main(String[] args) {  
            int [] arr = {0, 1, 2};     //数组(下标从0开始)  
    //      System.out.println(arr[4]); //Exception(数组下标越界异常)  
            System.out.println(arr[2]); //OK  
          
            try {  
                System.out.println(arr[4]);   
            } catch(ArrayIndexOutOfBoundsException aie) {  
                System.out.println("系统正在维护,请与管理员联系");  
                aie.printStackTrace();  //打印栈路径(注意大小写,否则会出错的)  
            }  
          
    //  TestEX te = new TestEX();  
    //  te.m(0);  
        /*输出结果: 
                系统正在维护,请与管理员联系 
                java.lang.ArrayIndexOutOfBoundsException: 4 
                at TestEX.main(TestEX.java:15) 
        */  
          
        try {       //此处可用可不用  
            new TestEX().m(0);    
        } catch(ArithmeticException ae) {  
            ae.printStackTrace();  
            System.out.println("出错了");    
        }  
      
        try {       //本段语句可能抛出多个异常,一个try可以和多个catch联用(个人觉得有点类似switch...case)  
            FileInputStream in = null;  
            in = new FileInputStream("MyFile.txt");   
            int b;  
            b = in.read();  
            while(b != 1) {  
                System.out.println(char b);   
                b = in.read();  
            }  
        } catch (FileNotFoundException e) { //抛出多个异常时注意先后顺序:(范围)先小后大(并列的话先后无所谓)  
            e.printStackTrace();      
          
        }   catch(IOException e) {  
                System.out.println(e.getMessage())  //得到有关异常事件的信息
        } finally { //对窗口的处理(关闭窗口)  
            try {  
                in.close();   
            }   catch(IOException e) {  
                e.printStackTrace();      //跟踪异常事件发生时,执行堆栈的内容
            }  
        }  
          
          
    }     
      
    void m(int i) throws ArithmeticException {  
        if(i == 0)  
            throw new ArithmeticException("被除数为0"); //相当于抛出异常  
    }  
      
    void f() throws FileNotFoundException, IOException {    //抛后者异常即可,但严格来讲最好二者都写  
        FileInputStream in = new FileInputStream{"MyFile.txt"};  
        int b;  
        b = in.read();  
        while(b != 1) {  
            System.out.println(char b);   
            b = in.read();  
        }  
    }  
}  
/* 
void m(int i) throws ArithmeticException {  //这只是一个method,而不是class,应该写class里面 
    if(i == 0) 
        throw new ArithmeticException("被除数为0");  
}*/  
  
/*************** 
 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 
        at TestEX.main(TestEX.java:11) 
 
****************/  
  
//arithmetic:算法,算术

 

知识点小结:

1. Error:系统错误(不可处理)
2. Exception:可处理的异常(必须catch)
3. RuntimeException:经常出的错误(可处理可不处理)(不必catch)


throw与throws的比较(from CSDN):

1、throws出现在方法函数头;而throw出现在函数体。

2、throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定抛出了某种异常对象。3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理

异常,真正的处理异常由函数的上层调用处理。


finally:

为异常处理提供一个统一的出口,finally中的语句一定会执行,通常在其中做一些清理工作,如关闭打开的文件、删除文件等


Notice:

1、若try...catch没有产生Exception,则catch中的语句不执行。

2、重写方法时,需要抛出与原方法类型一致的异常,或不抛出异常


to be continued ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值