java的每个方法最外层都要加上 try catch吗。

tuoluofo 2009-06-28 09:11:41
如果不加,是不是浪费了呢。 机制。
如果加了,是不是更浪费? 资源。
...全文
1004 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghostfox117 2009-07-14
  • 打赏
  • 举报
回复
不是都要加try、catch
也可以在方法声明的时候把方法的异常抛给上层调用方法。

如果在方法内部,需要处理特殊的异常,最好捕获。
例如JDBC异常等等。
奋斗并快乐着 2009-07-14
  • 打赏
  • 举报
回复
catch里什么都没有的程序,运行起来会让人一头雾水,出了异常一点反应都没有,
ArayChou 2009-07-14
  • 打赏
  • 举报
回复
另外还有想说的。有的异常,不try catch,不throw也可以编译通过。我现在只能举出一个例子,那就是java.lang.NullPointerException

如果你要释放资源,例如数据库连接池,还是的把所有代码try catch起来比较方便.

比较下下面3中释放数据库连接的情况


public void test(String a) {
Connection c = null;
// init connection
System.out.println(a.length()); //如果a为null,将导致数据库连接c不能关闭
try {
c.close();
} catch (SQLException e) {
}
}

public void test2(String a) {
Connection c = null;
// init connection
try {
System.out.println(a.length()); //这样肯定能关闭数据苦连接
} finally {
try {
c.close();
} catch (SQLException e) {
}
}
}

public void test3(String a) {
Connection c = null;
// init connection
if (a != null) //这个比test2要好,但是每次调用都判断是不是为null,非常的麻烦。
System.out.println(a.length());
try {
c.close();
} catch (SQLException e) {
}
}
junjun1984 2009-07-14
  • 打赏
  • 举报
回复
没异常产生就不要加了。
紫炎圣骑 2009-07-14
  • 打赏
  • 举报
回复
Java编程规范要求要明确捕获异常。

乱加try catch,很影响性能。
ArayChou 2009-07-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ArayChou 的回复:]
我觉得,我们可能常犯的错误,是将异常机制用来代替逻辑判断。

下面来个例子,可以定性说明用异常带来的程序效率的下降。

这个测试不严谨,没有考虑很多问题,但是每次都是异常执行的时间长

import java.util.Random;

/**
*
*/

/**
* @author aray
*
*/
public class ExceptionPerformanceTest {
static Random a = new Random();

/**
* @param args
*/
public static void main(String[] args) {

[/Quote]

汗一下,方法的名字取反了。noException是抛出异常的,withException是不跑出异常的。 不过,结论还是正确的。
ArayChou 2009-07-14
  • 打赏
  • 举报
回复
我觉得,我们可能常犯的错误,是将异常机制用来代替逻辑判断。

下面来个例子,可以定性说明用异常带来的程序效率的下降。

这个测试不严谨,没有考虑很多问题,但是每次都是异常执行的时间长

import java.util.Random;

/**
*
*/

/**
* @author aray
*
*/
public class ExceptionPerformanceTest {
static Random a = new Random();

/**
* @param args
*/
public static void main(String[] args) {
long time = System.currentTimeMillis();
for(int i=0; i<Short.MAX_VALUE*100; i++)
{
try{
noException();
}
catch (Exception e)
{
//do sth;
}
}
long time1 = System.currentTimeMillis();
for(int i=0; i<Short.MAX_VALUE*100; i++)
{
if(withException())
{
// do sth;
}
}
long time2 = System.currentTimeMillis();
System.out.println(time1-time);
System.out.println(time2-time1);

}

public static void noException() throws Exception {
double test = a.nextGaussian();
if (test > 0.5)
throw new Exception();
}

public static boolean withException() {
double test = a.nextGaussian();
return (test > 0.5);
}

}
sd01397055 2009-07-14
  • 打赏
  • 举报
回复
学习!
garysoft 2009-07-14
  • 打赏
  • 举报
回复
出异常的才加吧
keysprimary 2009-07-14
  • 打赏
  • 举报
回复
try{
---------
}catch(Exception ex){
ex.printStackTrace;
}
写起麻烦,但要用。还是加上好。
sxy159 2009-07-14
  • 打赏
  • 举报
回复
加try catch的好处是当程序异常了,不会直接终止导致程序崩溃
sxy159 2009-07-14
  • 打赏
  • 举报
回复
不一定每个方法都要加..

你可以在可能会出现异常的语句加上try catch
shadow55 2009-07-13
  • 打赏
  • 举报
回复
一般没什么必要吧,运行异常你try了也没什么用,其他的异常只能怪自己写的程序不严谨了!
sportli 2009-07-12
  • 打赏
  • 举报
回复
编译器异常肯定要加,运行期异常一般自己能够预知的都加上。自己不知道的运行期异常么,等你运行后知道了可以回过头来再加。
superspring 2009-06-29
  • 打赏
  • 举报
回复
你这样说是不对的

如果你知道catch后做什么,

就用

try{}
catch(){
}

不然就 throw

还有一个就是比如eclipse的提示也是很总要线索

greencar 2009-06-29
  • 打赏
  • 举报
回复
想要catch异常的时候才需要加。
奋斗并快乐着 2009-06-29
  • 打赏
  • 举报
回复
还有,不要认为e.printStackTrace()是处理异常的方法。
奋斗并快乐着 2009-06-29
  • 打赏
  • 举报
回复
try{
////////
}catch(e){
////////
}
除非明确的知道catch里需要怎么处理异常,要么不如直接用throws声明抛出去。
如果方法实在不允许throws任何异常,还可以包装成RuntimeException throw出去。
默然说话 2009-06-28
  • 打赏
  • 举报
回复
每个方法都加try?真是一个聪明的懒人办法。加吧加吧。鼓励你狂加。


加完你就会知道什么叫做聪明反被聪明误了。
luosl 2009-06-28
  • 打赏
  • 举报
回复
为什么这样问呢,你看过的别人写的Java代码都这么做么。

先要了解try catch的含义,然后就知道怎么作了。
加载更多回复(2)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧