论坛首页 Java企业应用论坛

平台异常2 - try/catch or throws

浏览 5619 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (17)
作者 正文
   发表时间:2011-02-12  

在处理抛出异常的方法时,我们可以采用try/catch进行捕捉 或者使用throws抛出, 但具体怎么使用, 什么时候进行try/catch,什么时候进行throws? 现通过代码简要总结.

实验1 :使用try/catch

 在main方法中对methord1()抛出的异常进行捕捉 

import java.io.File;
import java.io.IOException;

public class ExceptionTest {

	public static void main(String[] args) {
		try {
			methord1();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		methord2();
	}
	private static void methord1() throws IOException {
		// TODO Auto-generated method stub
		System.out.println("methord1 ");
		File f = new File("");
		f.createNewFile();
		
		System.out.println("methord1111 ");
	}
	private static void methord2() {
		// TODO Auto-generated method stub
		System.out.println("methord2 ");
	}
}

,结果为:

methord1 
java.io.IOException: 系统找不到指定的路径。
	at java.io.WinNTFileSystem.createFileExclusively(Native Method)
	at java.io.File.createNewFile(File.java:850)
	at com.bryant.test.ExceptionTest.methord1(ExceptionTest.java:21)
	at com.bryant.test.ExceptionTest.main(ExceptionTest.java:10)
methord2 

 methord2 方法也执行.

 

实验2.使用throws

修改main方法为throws methord1()抛出的异常:

public static void main(String[] args) throws IOException {
		
		methord1();
		methord2();
	}

 

结果为:

methord1 
Exception in thread "main" java.io.IOException: 系统找不到指定的路径。
	at java.io.WinNTFileSystem.createFileExclusively(Native Method)
	at java.io.File.createNewFile(File.java:850)
	at com.bryant.test.ExceptionTest.methord1(ExceptionTest.java:17)
	at com.bryant.test.ExceptionTest.main(ExceptionTest.java:10)

 方法methord2 没有执行.

由此总结:

当出现的异常使程序后面无法执行时,抛出异常,结束程序.使用throws
当程序出现异常,不影响后续操作时,捕捉异常,后续程序将继续执行.使用try/catch

 

 

 

 

   发表时间:2011-02-14  
这个……本来就是两个东西一个抛出一个捕获
0 请登录后投票
   发表时间:2011-02-15  
throws抛给上一层处理,try/catch捕获,是出现异常时在catch中做些处理,并不是中止程序,也没默认return;
0 请登录后投票
   发表时间:2011-02-15  
新手贴???
0 请登录后投票
   发表时间:2011-02-15  
我无语了!
        try { 
            methord1(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        }
0 请登录后投票
   发表时间:2011-02-15  
elliotann 写道
throws抛给上一层处理,try/catch捕获,是出现异常时在catch中做些处理,并不是中止程序,也没默认return;

谢谢你的回复. 我表述有问题 ,应该是当使用throw 时,程序跳出本方法执行,throw后面的代码讲不执行.
你说的 return 指什么?
0 请登录后投票
   发表时间:2011-02-15  
smilebug 写道
这个……本来就是两个东西一个抛出一个捕获

谢谢你的回复. 我想说明的是何时使用抛出 ,何时捕获.
0 请登录后投票
   发表时间:2011-02-15  
freish 写道
新手贴???

是, 我刚接触实际的项目开发. 请多指教.
0 请登录后投票
   发表时间:2011-02-15  
aflyer 写道
我无语了!
        try { 
            methord1(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        }

谢谢指教.
我随手写的代码,只是想说明一下问题,代码命名让你见笑了
0 请登录后投票
   发表时间:2011-02-15  
慢慢来 学技术就得脸大 怎么可能每次都对呢
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics