> For the complete documentation index, see [llms.txt](https://easonwang.gitbook.io/web_advance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://easonwang.gitbook.io/web_advance/chapter1/assert_zi_ding_pao_chu_de_cuo_8aa429.md).

# assert (自訂拋出的錯誤)

## assert (自訂拋出的錯誤)

### 一般會用mocha框架替代

如果遇預期相同則不會有錯誤

```
var assert = require('assert');


assert( 3 === 4, '預期出錯');
```

另一種寫法

```
assert.equal(4, 3, '预期錯誤');
```

相反

```
assert.notEqual(4, 3, '预期錯誤');
```

\*\*注意其使用!= 而非!==

如要使用=== 可用

```
assert.strictEqual()
assert.notStrictEqual()
```

## 比較物件是否相等

```
var assert = require('assert');

var person1 = { "name":"john", "age":"21" };
var person2 = { "name":"john", "age":"22" };


assert.notDeepEqual(person1, person2, '预期錯誤');
```

反之

```
assert.deepEqual()
```

## throws() 和 doesNotThrow()，他們用来判斷一段代碼是否會抛出異常

```
var assert = require('assert');
assert.throws(function() {///預期會拋出
　　throw new Error("Seven Fingers. Ten is too mainstream.");
});
assert.doesNotThrow(function() {///預期不會拋出，但拋出了，所以產生異常訊息
　　throw new Error("I lived in the ocean way before Nemo");
});
```

## assert.fail(21, 21, 'Testtest Failed', '###');不管怎樣都會拋出異常

將上面例子改成如下

```
var assert = require('assert');
assert.throws(function() {///預期會拋出
　　assert.fail(21, 21, 'Testtest Failed', '###');
});
assert.doesNotThrow(function() {///預期不會拋出，但拋出了，所以產生異常訊息
　　assert.fail(21, 21, 'Test Failed', '###');
});
```
