我正在用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.如果不是,則意味着異常發生,否則不會。
有沒有更好的方法來做到這一點?
這是一個非常有趣的問題。一方面,你想做「編譯」工作;這在軟件工程中經常被視爲相當先進的主題。另一方面;你建議在你的主要方法中做「真正的東西」。後來某種程度上表明......你對設計不太瞭解。所以,除非這是一些「家庭作業」項目;實際上,我建議您先回顧一下並首先了解OO設計(例如查看Fowler的「SOLID」規則),然後深入探討編譯器構建等主題。 – GhostCat
無論如何,例外可能是報告問題的錯誤方式。你不能有「(或更多)」例外。可能會返回包含有關發現的一個或多個錯誤信息的對象列表,這是一種更好的方法。 – Arkadiy
據我所知,用異常做「catch and continue」是不可能的。 – apokryfos