java的每个方法最外层都要加上 try catch吗。 如果不加,是不是浪费了呢。 机制。如果加了,是不是更浪费? 资源。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 只有会抛出异常的方法需要用 try catch,并且有些异常必须用try catch包含 为什么这样问呢,你看过的别人写的Java代码都这么做么。先要了解try catch的含义,然后就知道怎么作了。 每个方法都加try?真是一个聪明的懒人办法。加吧加吧。鼓励你狂加。加完你就会知道什么叫做聪明反被聪明误了。 try{ ////////}catch(e){ ////////}除非明确的知道catch里需要怎么处理异常,要么不如直接用throws声明抛出去。如果方法实在不允许throws任何异常,还可以包装成RuntimeException throw出去。 还有,不要认为e.printStackTrace()是处理异常的方法。 想要catch异常的时候才需要加。 你这样说是不对的如果你知道catch后做什么,就用 try{}catch(){}不然就 throw还有一个就是比如eclipse的提示也是很总要线索 一般没什么必要吧,运行异常你try了也没什么用,其他的异常只能怪自己写的程序不严谨了! 不一定每个方法都要加..你可以在可能会出现异常的语句加上try catch 加try catch的好处是当程序异常了,不会直接终止导致程序崩溃 try{ ---------}catch(Exception ex){ ex.printStackTrace;}写起麻烦,但要用。还是加上好。 我觉得,我们可能常犯的错误,是将异常机制用来代替逻辑判断。下面来个例子,可以定性说明用异常带来的程序效率的下降。这个测试不严谨,没有考虑很多问题,但是每次都是异常执行的时间长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); }} 汗一下,方法的名字取反了。noException是抛出异常的,withException是不跑出异常的。 不过,结论还是正确的。 Java编程规范要求要明确捕获异常。乱加try catch,很影响性能。 另外还有想说的。有的异常,不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) { } } catch里什么都没有的程序,运行起来会让人一头雾水,出了异常一点反应都没有, 不是都要加try、catch也可以在方法声明的时候把方法的异常抛给上层调用方法。如果在方法内部,需要处理特殊的异常,最好捕获。例如JDBC异常等等。 求助java队列实现的源程序 Hibernate 实现动态的“lazy” 关于java打印的问题 jdbc如何更改表结构 在线等! 怎样用import加入自己的类 java中如何复制图像文件 急救!! 连接数据库后,怎么往数据库中写数据,即增加新的记录 java中如何将ascII 码转换成字符以及将字符转换成ascII码? java中抛出的异常无法被捕获到,究竟是为啥,有高手来解答否 Graphics.setClip, Graphics.drawString 我用mysql不知道时间怎么设置的. java获取的时候
加完你就会知道什么叫做聪明反被聪明误了。
////////
}catch(e){
////////
}
除非明确的知道catch里需要怎么处理异常,要么不如直接用throws声明抛出去。
如果方法实在不允许throws任何异常,还可以包装成RuntimeException throw出去。
catch(){
}不然就 throw还有一个就是比如eclipse的提示也是很总要线索
---------
}catch(Exception ex){
ex.printStackTrace;
}
写起麻烦,但要用。还是加上好。
*
*//**
* @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);
}}
汗一下,方法的名字取反了。noException是抛出异常的,withException是不跑出异常的。 不过,结论还是正确的。
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) {
}
}
也可以在方法声明的时候把方法的异常抛给上层调用方法。如果在方法内部,需要处理特殊的异常,最好捕获。
例如JDBC异常等等。