IFDS的icfg對異常的處理

2021-08-14 03:22:48 字數 693 閱讀 3988

ifds的icfg對異常的處理:

異常產生的target語句:

1. 如果產生異常的語句在try/catch中,則target就是catch塊的第一條語句「$r8 :=@caughtexception;」。

2. 如果不在try/catch中(當前方法宣告為throws exception),則target就是return語句(returnvoidstmt或者returnstmt)。注意,產生異常的語句,與return本不相鄰,是soot根據異常機制將兩者連線起來。

包含異常target在內的cfg:

1. normal語句丟擲異常,例如陣列訪問。

succs裡有異常target語句。ifds的processnormalflow()會呼叫normal邊的flowfunction進行data傳播。於是data會傳播到target語句。

2. call語句丟擲異常。

1) succs裡有target語句.

2) call語句的returnsite(icfg.getreturnsitesofcallat(call))有異常target語句。ifds的processcall()會呼叫call-to-return邊的flowfunction進行data傳播。 【

注意:不是call邊的flowfunction,而是call-to-return邊的flowfunction。後者將data傳播到到了異常target語句。】

系統對異常的處理使用統一的異常處理流程

系統對異常的處理使用統一的異常處理流程。1 自定義異常型別。2 自定義錯誤 及錯誤資訊。3 對於可預知的異常由程式設計師在 中主動拋出自定義異常型別的異常,丟擲異常時需要指定錯誤 4 對於不可預知的異常 執行時異常 由springmvc統一捕獲exception型別的異常,由統一的異常捕獲類來解析 ...

scanf函式對異常輸入的處理

標籤 空格分隔 c 雙學位高階語言程式設計 程式設計竅門 c輸入輸出 如果想用c語言的scanf函式篩選正常輸入,過濾異常輸入,那便可以用scanf函式的返回值了。scanf函式有返回值,但是我們一般都僅用其輸入功能。返回值用法如下。include int main scanf返回值的意思是正確讀入...

專案結構分層,各層的對異常的處理

在 dao 層,產生的異常型別有很多,無法用細粒度的異常進行 catch,使用 catch exception e 方式,並 throw new daoexception e 不需要列印日誌,因為日誌在 manager service 層一定需要捕獲並列印到日誌檔案中去,如果同台伺服器再打日誌,浪費...