请问:throws 与 try{ }catch() 到底有什么区别??
private void writeToFile() throws IOException{
RandomAccessFile oSavedFile = new RandomAccessFile("c:\\down.htm", "rw");
byte[] buffer = html.getBytes();
oSavedFile.write(buffer, 0, buffer.length);
}
private void writeToFile(){
try{
RandomAccessFile oSavedFile = new RandomAccessFile("c:\\down.htm", "rw");
byte[] buffer = html.getBytes();
oSavedFile.write(buffer, 0, buffer.length);
}catch(IOException e){ }
}这样两种写法到底有什么好处与坏处啊?谢谢!~~
private void writeToFile() throws IOException{
RandomAccessFile oSavedFile = new RandomAccessFile("c:\\down.htm", "rw");
byte[] buffer = html.getBytes();
oSavedFile.write(buffer, 0, buffer.length);
}
private void writeToFile(){
try{
RandomAccessFile oSavedFile = new RandomAccessFile("c:\\down.htm", "rw");
byte[] buffer = html.getBytes();
oSavedFile.write(buffer, 0, buffer.length);
}catch(IOException e){ }
}这样两种写法到底有什么好处与坏处啊?谢谢!~~
try{ }catch() :异常处理..在容易出现异常的地方用...
这么写就是凡调用到writeToFile()的地方都必须try&catch,当然你也可以在private void writeToFile() throws IOException
内部就完成try&catch的任务,那样的话就可以去掉throws IOException了private void writeToFile() {
try{
RandomAccessFile oSavedFile = new RandomAccessFile("c:\\down.htm", "rw");
byte[] buffer = html.getBytes();
oSavedFile.write(buffer, 0, buffer.length);
}catch(IOException ioe){
}
}
道理是一样的
try{}catch(){}就是捕获异常
编写一个方法时,如果一些异常自己能处理,最好自己用try{}catch(){}作内部处理,免得别人调用时,还麻烦的处理该异常,但有些异常是有必要交给调用它的人去处理的,或自己不好处理的,此时throws就可以了
catch()就是接住"异常"这个"东西",然后在{...}中处理它
try{}就是"试试"{..}中的代码中有没有异常,有就抛出它
throws是带throws的方法(如方法A)中如果有异常,那这个方法A自己不去处理这个异常,而是交给调用他的方法或者父类处理也就是说,throws是接别人传过来的,(或自己产生)完了再传出去
也可以说,这个方法处理这个"异常"的方式是:再抛出.(就像消费者找商家,商家说我不管,throws给厂家 ^_^)throw才是自己抛出一个
也就是说这个带throw的方法,如方法B,他执行完{}代码后会,而且肯定会抛出一个异常,那么调用这个方法的类,必须接住这个异常
catch()就是接住"异常"这个"东西",然后在{...}中处理它
throws就是在方法的{}中如果有异常产生,那么处理这个异常的方式是:再抛给上一级.
throw就是处理完方法的{}中的代码之后,这个方法会,而且肯定会抛出一个异常.
throw是"抛",try是"查并接",catch是"处理"
没有了throw就没有try catch了
如果你在方法中throw一个异常,却没有在方法声明中声明之,编译器会报错。
注意Error和RuntimeException的子类是例外,无需特别声明。
你可以在方法中拦截底层异常并处理之,也可以抛给更高层的模块去处理。
你也可以抛出自己的异常指示发生了某些不正常情况。常见的拦截处理代码如下:
try
{
...... //以下是可能发生异常的代码
...... //异常被抛出,执行流程中断并转向拦截代码。
......
}
catch(Exception1 e) //如果Exception1是Exception2的子类并要做特别处理,应排在前面
{
//发生Exception1时被该段拦截
}
catch(Exception2 e)
{
//发生Exception2时被该段拦截
}
finally //这是可选的
{
//无论异常是否发生,均执行此段代码
}
而try{}catch{}是将异常捕获自行处理
try catch是防守如果出现异常。就用catch来处理
你是程序员,Coding的时候发现有问题,怎么办?两种办法:1、能搞定的自己解决2、搞不定的上报组长,包括自己先处理一下再上报组长
===================================================
这位老兄解释得很容易懂。1,能搞定的,try...catch...然后自己处理。
2。搞不定的,throws 给调用的地方,老大,出错了,交给你处理了。