【问题标题】:Does performance gets effected if unnecessary codes inside try block?如果 try 块内有不必要的代码,性能会受到影响吗?
【发布时间】:2013-09-19 10:17:36
【问题描述】:

对于 sql 连接我们一般是这样的

Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","username","password");

由于这会引发异常,所以我们通常在 try 块中编写。但是我的问题是,如果我在 try 块中编写不引发异常的不必要代码,那么性能会受到影响吗?

try
{
//some 100 lines codes that does not throw exception
 Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test","username","password");
}
catch(Exception e)
{
}

【问题讨论】:

  • 如果你不能删除代码,那么你需要它。如果您测量到它正在影响您的应用程序,我会担心性能。否则你只是在猜测。
  • 尝试捕获性能,可能重复:stackoverflow.com/q/16451777/1544069

标签: java


【解决方案1】:

不,至少没有任何意义。拥有“太大”的 try 块的最大危害是可读性,并且在大多数情况下它没有意义。您可以只在方法中使用 throws SQLException,而不是在大部分方法中使用 try 块。

【讨论】:

    【解决方案2】:

    不这么认为。

    避免应用程序崩溃的好习惯。

    但想法是不要盲目使用Exception,但例外情况请参阅您的try{}

    在你的情况下:

    try{
    //...
    }
    catch (ClassNotFoundException e) {
    
    }
    catch(SQLException e)
    {
    }
    

    【讨论】:

    • 不使用异常但仅使用 try realted 异常的任何优点
    • @javaBeginner, catch(Exception e) 表示您不知道要捕获什么。在一个好的应用程序中,您希望以不同的方式处理不同的异常。如果你不想在你的方法中处理异常,你可以根据抽象级别抛出另一个异常,以便在另一个地方捕获它。在您的情况下,如果 jdbc 驱动程序有问题,将抛出 ClassNotFoundException,但如果用户名、密码、与数据库服务器的连接以及服务器本身出现错误,则会抛出 SQLException
    • @javabeginner 大概你的捕获处理一个抛出 SQLException 的特定问题。如果出现意外错误,则 SQL 修复将应用于导致“意外”结果的非 SQL 问题。我假设你在现实生活中的 catch 语句中有一些东西,只是为了简洁起见在你的问题中省略了它
    • @SpongeBobFan 关于性能我认为两者都需要相同的时间?
    • @javaBeginner,你为什么要考虑性能?它是您应用程序的瓶颈吗?
    【解决方案3】:

    If I write unnecessary codes that does not throws exception with in try block then will the performance gets effected?

    答案是no
    在 try-blocks 中有代码应该基本上是零性能影响。当实际抛出异常时,真正的打击出现了。
    阅读这些 SO 问题
    1.Java try/catch performance, is it recommended to keep what is inside the try clause to a minimum?
    2.Try Catch Performance Java

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 2020-11-12
      • 2011-01-10
      • 1970-01-01
      相关资源
      最近更新 更多