# 【Require】

`require()` 用於檢驗簡單的條件:

* 合理的輸入
* 執行前必要的簡單條件
* 回傳一則訊息

```solidity
pragma solidity ^0.8.11;

contract error {
    function testRequire(uint _i) public pure {
        require(_i > 10, "Input must be greater than 10");
    }
}
```

Require 會被觸發的情況及性質如下：

* `require(X)` 其中 X 為`false`
* 經由message呼叫函數，但此函數並沒有被適當地完成
  * 不包含Low-Level的函式呼叫
* 使用外部函數呼叫了一個沒有任何程式碼的合約
* 合約裡面的物件沒有被宣告payable modifier卻接收到了Ether
* 唯讀的函式（getter function）接收到了Ether
* `Address.transfer()` 執行失敗
