2016-04-15 21 views
0

我正在用Java實現一個編譯器類型檢查器。如果給定的輸入文件(程序)在語義上錯誤,我的typeChecking類包含拋出RuntimeExceptions的方法。打印多個例外的方法調用

現在發生的事情是,當我的程序發現錯誤時,它拋出異常並終止程序。我想要的功能是如果在typeChecking類中發生異常,請在某處保留所有異常消息並將其打印在我的Main類中。

僞例如:

// Main class part of code 
public static void main(String[] args){ 

    call typeChecking method 

    if an exception (or more) occurred in the typeChecking class 
     then print all the exception messages 
    else no semantic errors found 
     then do something else 
} 

我的想法是創建一個靜態String陣列,並在其中添加所有的異常消息。然後在我的Main類中,我將檢查數組的大小是否爲0.如果不是,則意味着異常發生,否則不會。

有沒有更好的方法來做到這一點?

+1

這是一個非常有趣的問題。一方面,你想做「編譯」工作;這在軟件工程中經常被視爲相當先進的主題。另一方面;你建議在你的主要方法中做「真正的東西」。後來某種程度上表明......你對設計不太瞭解。所以,除非這是一些「家庭作業」項目;實際上,我建議您先回顧一下並首先了解OO設計(例如查看Fowler的「SOLID」規則),然後深入探討編譯器構建等主題。 – GhostCat

+0

無論如何,例外可能是報告問題的錯誤方式。你不能有「(或更多)」例外。可能會返回包含有關發現的一個或多個錯誤信息的對象列表,這是一種更好的方法。 – Arkadiy

+0

據我所知,用異常做「catch and continue」是不可能的。 – apokryfos

回答

0

只要使用try-catch塊來捕獲異常,並執行任何你想捕獲的異常。即

// Main class part of code 
public static void main(String[] args){ 
    boolean exceptionOccured = false; 
    try{ 
     call typeChecking method 
    }catch(RuntimeException e){ 
     exceptionOccured = true; 
     ...print it or put in an array or whatever. 
    } 
    if(exceptionOccured) 
     do something else 
} 
+0

這不會中斷typeChecking方法嗎?我希望它繼續運行,以便找到其他錯誤 – pirox22

+0

@ pirox22如果引發異常,它被中斷,你不能阻止它。 – kan