java异常问题

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class test {

 /**
  * @param args
  */
 public static void main(String[] args) {
        String fileName = "C:/temp/newTemp.txt";
        readFileByLines(fileName);
        
        System.out.println("123");

 }
 
    public static void readFileByLines(String fileName) {
        File file = new File(fileName);
        BufferedReader reader = null;
        try {
            System.out.println("以行为单位读取文件内容,一次读一整行:");
            reader = new BufferedReader(new FileReader(file));
            String tempString = null;
            int line = 1;
            // 一次读入一行,直到读入null为文件结束
            while ((tempString = reader.readLine()) != null) {
                // 显示行号
                System.out.println("line " + line + ": " + tempString);
                line++;
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (reader != null) {
                try {
                    reader.close();
                } catch (IOException e1) {
                }
            }
        }

        System.out.println("以行为单位读取文件内容,一次读一整行:"); 
    }

}

运行结果:

以行为单位读取文件内容,一次读一整行:
java.io.FileNotFoundException: C:\temp\newTemp.txt (系统找不到指定的路径。)
 at java.io.FileInputStream.open(Native Method)
 at java.io.FileInputStream.<init>(Unknown Source)
 at java.io.FileReader.<init>(Unknown Source)
 at com.zte.telnet.test.test.readFileByLines(test.java:26)
 at com.zte.telnet.test.test.main(test.java:15)
以行为单位读取文件内容,一次读一整行:
123

 

结论:

如果所提供的函数已经写好了异常捕获的代码,那么调用此函数时如果发生异常,函数内部就会自行处理,调用者的代码还会继续执行。最后会输出123,也就是说异常如果捕获处理并且没有被抛出,try后边的代码不能执行了,但是后边不在try块里的代码依然可以执行。

 

异常块执行顺序:

<span style="color:#000000;">try{
     1;
     2;
catch(Exception e){
     3;
}finally{
     4;
}
6
7</span>

如果1发生异常了,2不会执行,3会执行,4会执行。如果3不是returen语句,那么 6,7 会执行。3是不是reture语句4都会执行

我们写程序时如果tyr到的异常会影响到后续代码6,7的执行时,我们就在catch中加入return语句;如果异常不会影响程序接着执行,那么久不加。

 

自定义异常参数传递问题: 抛出异常 捕获异常 根据自己需要的信息输出异常信息

<pre class="java" name="code">public class Numbertest   
{  
    public int shang(int x,int y) throws ChushulingException 
    {  
       
        if(y==0)  
        {  
            <span style="color:#ff0000;">throw new ChushulingException("您输入的是"+y+",除数不能为0!");  
</span>        }  
      
        int m=x/y;  
        return m;  
    }  
    
    public static void main(String[]args)  
    {  
        Numbertest n=new Numbertest();  
  
        //捕获异常   
        try  
        {  
            System.out.println("商="+n.shang(1,0));  
        }  
        catch(ChushulingException yc)  
        {  
     
          <span style="color:#ff0000;">  System.out.println(new ChushulingException("123").getMessage()); 
</span>        }  
        catch(Exception y)  
        {  
            System.out.println(y.getMessage());  
            y.printStackTrace();  
        }  
      
        finally{ System.out.println("finally!");} finally不管发没发生异常都会被执行     
  
    }  

}  
  
class ChushulingException extends Exception  
{  
    public ChushulingException(String msg)  
    {  
        <span style="color:#ff0000;">super(msg);  
</span>    }  
}   


 
 

结果:

123
finally!

想要输出自己想要的信息时用这种方式。

 

 

 


 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值