# Erg Compiler Errors [![badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2Fsource_up_to_date%3Fowner%3Derg-lang%26repos%3Derg%26ref%3Dmain%26path%3Ddoc/EN/compiler/errors.md%26commit_hash%3D51de3c9d5a9074241f55c043b9951b384836b258)](https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=erg-lang&repos=erg&ref=main&path=doc/EN/compiler/errors.md&commit_hash=51de3c9d5a9074241f55c043b9951b384836b258) ## AssignError 嘗試重寫不可變變量時發生 ## AttributeError 嘗試訪問不存在的屬性時發生 ## PurityError 當您在不允許副作用的范圍內(函數、不可變類型等)編寫導致副作用的代碼時發生 ## MoveError 嘗試訪問已移動的變量時發生 ## BorrowError 在存在對對象的借用時嘗試獲取可變引用時發生 ## CyclicError 當你有一個明顯不可阻擋的循環時發生 ```python i: Int = i f(): Int = g() g() = f() h(): Int = module::h() T = U U = T ``` ## BytecodeError 當加載的字節碼損壞時發生 ## CompileSystemError 在編譯器內部發生錯誤時發生 ## EnvironmentError 如果您在安裝期間沒有訪問權限,則會發生這種情況 ## FeatureError 在檢測到未正式提供的實驗性功能時發生 ## ImportError ## IndentationError 檢測到不良縮進時發生 派生自SyntaxError ## NameError 當您訪問不存在的變量時發生 ## NotImplementedError 當您調用具有定義但沒有實現的 API 時發生 派生自 TypeError ## PatternError 當檢測到非法模式時發生 派生自SyntaxError ## SyntaxError 在檢測到錯誤語法時發生 ## TabError 在使用制表符進行縮進/間距時發生 派生自SyntaxError ## TypeError 當對象類型不匹配時發生 ## UnboundLocalError 在定義之前使用變量時發生 更準確地說,它發生在以前使用過在范圍內定義的變量時 ```python i = 0 f x = y = i + x i = 1 y + i ``` 在這段代碼中,`y = i + x` 中的 `i` 是一個未定義的變量 但是,常量可以在定義之前在另一個函數中調用 ```python f() = g() g() = f() ``` ## Erg Compiler Warnings ## SyntaxWarning 它在語法上很好,但是當我們檢測到冗余或不常見的代碼(不必要的 `()` 等)時就會發生這種情況 ```python if (True): # SyntaxWarning: unnecessary parentheses ... ``` ## DeprecationWarning 在不推薦使用引用的對象時發生 (開發人員在生成此警告時應始終提供替代方法作為提示) ## FutureWarning 當您檢測到將來可能導致問題的代碼時發生 此警告是由版本兼容性問題(包括庫)以及語法和 API 的更改引起的 ## ImportWarning