Java 中的 try catch 影響效能嗎?

2021-09-20 00:05:33 字數 1889 閱讀 9125

前幾天在 code review 時發現有一段**中存在濫用 try catch 的現象。其實這種行為我們也許都經歷過,剛參加工作想盡量避免出現崩潰問題,因此在很多地方都想著 try catch 一下。

但實際上這種習慣不僅會讓**很難看,更會影響**的執行效能。有些人會覺得,不就是乙個 try catch 麼,怎麼會影響效能啊。那就讓我們來測試看看吧。

實驗

首先,我們看看沒有 try-catch 情況下,進行 100 萬次加法的耗時:

long

start

=system

.nanotime

();

inta =

0;

for

(inti =

0;i <

1000000;i

++)

system

.out

.println

(system

.nanotime()-

start

);

經過5次統計,其平均耗時為:1816048 納秒,即 1.8 毫秒。

接著,我們來看看在有 try-catch 情況下,進行 100 萬次加法的耗時:

long

start

=system

.nanotime

();

inta =

0;

for

(inti =

0;i <

1000000;i

++)catch

(exceptione)

}

system

.out

.println

(system

.nanotime()-

start

);

經過5次統計,其平均耗時為: 1928394 納秒,即 1.9 毫秒。

我們再來看看,如果 try-catch 丟擲異常,進行 100 萬次加法的耗時:

long

start

=system

.nanotime

();

inta =

0;

for

(inti =

0;i <

1000000;i

++)catch

(exceptione)

}

system

.out

.println

(system

.nanotime()-

start

);

經過 5 次統計,其平均耗時為:780950471 納秒,即 780 毫秒。

經過上面三次統計,我們可以看到在沒有 try catch 時,耗時 1.8 毫秒。在有 try catch 但是沒有丟擲異常,耗時 1.9 毫秒。在有丟擲異常,耗時 780 毫秒。我們能得出乙個結論:如果 try catch 沒有丟擲異常,那麼其對效能幾乎沒有影響。但如果丟擲異常,那對程式將造成幾百倍的效能影響。

結論

雖然在沒有丟擲異常時,try catch 幾乎沒有效能影響。但是一旦丟擲異常,那麼其對效能的影響將是巨大的。因此我們在實際程式設計的時候,需要特別注意 try catch 語句的使用,不在沒有必要的地方過多使用。

Java中的try catch的作用

try裡面是一些你覺得可能會出問題的 catch裡就是你覺得會有什麼問題,如果出的問題正好是你catch裡說到的問題,那麼他就會按照你設定的,比如會列印出來,比如會退出方法等等 然後接著往下執行後面該執行的 但是如果你不用try 的話,沒問題,很好,一有問題,就會在那裡停住,然後給使用者乙個很不友好...

Java中的try catch的作用

try裡面是一些你覺得可能會出問題的 catch裡就是你覺得會有什麼問題,如果出的問題正好是你catch裡說到的問題,那麼他就會按照你設定的,比如會列印出來,比如會退出方法等等 然後接著往下執行後面該執行的 但是如果你不用try 的話,沒問題,很好,一有問題,就會在那裡停住,然後給使用者乙個很不友好...

Java 中的 try catch 影響效能嗎?

前幾天在 code review 時發現有一段 中存在濫用try catch的現象。其實這種行為我們也許都經歷過,剛參加工作想盡量避免出現崩潰問題,因此在很多地方都想著 try catch一下。但實際上這種習慣不僅會讓 很難看,更會影響 的執行效能。有些人會覺得,不就是乙個 try catch 麼,...