异常分类

**异常(Exception)**是进行异常处理的重要信息传递工具,所有内置的错误类型都是 Exception 的子类型

名称描述
ArgumentError给定的参数不符合人为规定
AssertionError断言失败
Base.IOError流操作出错
BoundsError进行索引操作时越界
CompositeException描述(可能由线程带来)的多个错误
DimensionMismatch多维数组操作时维度不统一
DivideError除以 0
DomainError给定的参数超过某个范围,如 sqrt(-1)
EOFError流中无法读入更多数据
ErrorException泛化的错误
InexactError类型转化时无法解决的不精确问题
InitError模块使用 __init__ 初始化时抛出的错误
InterruptException进程被终端阻塞
KeyError对字典或集合访问/删除不存在的键
LoadErrorincluderequireusing 时抛出的错误
Meta.ParseError表达式解析失败
MethodError调用的函数不具有指定方法(由参数类型决定)
MissingException在不支持 missing 的情况下遇到了 missing
OutOfMemoryError系统或垃圾收集器无法承载内存消耗
OverflowError表达式结果对于指定类型太大
ReadOnlyMemoryError尝试在只读区域写入数据
SegmentationFault段错误,可能是指针偏移
StackOverflowError栈溢出,函数多级调用开销过大(通常是错误地进行了无限递归)
StringIndexError参阅
SystemError调用系统 API 时出错
TaskFailedException线程运行失败
TypeError类型断言失败
UndefKeywordError给函数传额外参数时漏传
UndefRefError访问未定义的某物品或字段
UndefVarError当前作用域中某量未定义

练习

对于以下填空题,判断抛出的异常类型,不会抛出异常则填入 nothing


1.

NaN/0

2.

1÷0

3.

[1, 2, 3, 4][8]

4.

"cat"/0

5.

foo() = foo(); foo()

6.

[1 2; 3 4] - [1, 1, 1, 1]

7.

"猫猫"[2]

8.

Dict(0 => 1)[1]

9.

@assert 1==0

10.

typeassert(0.0, Int)