Defining Exceptions
Inspect one language lane at a time so line-level text and code deltas stay readable.
Diff Lane
English
0 modified sections0 code block delta0 anchor delta
Diff Lane
中文
1 modified sections0 code block delta0 anchor delta
modified定义异常text+3 lines
v1.0.5
Section Text
1
异常是一类特殊的可以被程序员捕获并处理的错误,是程序执行时出现的一系列不正常行为的统称。例如,数组越界、除零错误、计算溢出、非法输入等。为了保证系统的正确性和健壮性,很多软件系统中都包含大量的代码用于错误检测和错误处理。2
3
异常不属于程序的正常功能,一旦发生异常,要求程序必须立即处理,即将程序的控制权从正常功能的执行处转移至处理异常的部分。仓颉编程语言提供了异常处理机制,用于处理程序运行时可能出现的各种异常情况。4
5
在仓颉语言中,异常类包括 `Error` 和 `Exception`:6
7
- `Error` 类描述仓颉语言运行时,系统内部错误和资源耗尽错误。应用程序不应该抛出这种类型错误,如果出现内部错误,只能通知给用户,尽量安全终止程序。8
- `Exception` 类描述的是程序运行时的逻辑错误或者 IO 错误导致的异常,例如数组越界或者试图打开一个不存在的文件等,这类异常需要在程序中捕获处理。9
10
开发者不可以通过继承仓颉语言内置的 Error 或其子类来自定义异常,但是可以继承内置的 Exception 或其子类来自定义异常,例如:11
12
<!-- compile -->13
14
15
下表展示了 `Exception` 的主要函数及其说明:16
17
| 函数种类 | 函数及说明 |18
| :------- |:--------------------------------------------------------------------------|19
| 构造函数 | `init()` 默认构造函数。 |20
| 构造函数 | `init(message: String)` 可以设置异常消息的构造函数。 |21
| 成员属性 | `open prop message: String` 返回发生异常的详细信息。该消息在异常类构造函数中初始化,默认为空字符串。 |22
| 成员函数 | `open func toString(): String` 返回异常类型名以及异常的详细信息,其中,异常的详细信息会默认调用 message。 |23
| 成员函数 | `func getClassName(): String` 返回用户定义的类名,子类需要重写该方法以返回子类的名称。 |24
| 成员函数 | `func printStackTrace(): Unit` 打印堆栈信息至标准错误流。 |25
26
下表展示了 `Error` 的主要函数及其说明:27
28
| 函数种类 | 函数及说明 |29
| :------- | :----------------------------------------------------------- |30
| 成员属性 | `open prop message: String` 返回发生错误的详细信息。该消息在错误发生时,内部初始化,默认为空字符串。 |31
| 成员函数 | `open func toString(): String` 返回错误类型名以及错误的详细信息,其中,错误的详细信息会默认调用 message。 |32
| 成员函数 | `func printStackTrace(): Unit` 打印堆栈信息至标准错误流。 |Code 1 · cangjie
1
open class FatherException <: Exception {2
public init() {3
super("This is FatherException.")4
}5
public init(message: String) {6
super(message)7
}8
public open override func getClassName(): String {9
"FatherException"10
}11
}12
13
class ChildException <: FatherException {14
public init() {15
super("This is ChildException.")16
}17
public open override func getClassName(): String {18
"ChildException"19
}20
}v1.1.0
Section Text
1
异常是一类特殊的可以被程序员捕获并处理的错误,是程序执行时出现的一系列不正常行为的统称。例如,数组越界、除零错误、计算溢出、非法输入等。为了保证系统的正确性和健壮性,很多软件系统中都包含大量的代码用于错误检测和错误处理。2
3
异常不属于程序的正常功能,一旦发生异常,要求程序必须立即处理,即将程序的控制权从正常功能的执行处转移至处理异常的部分。仓颉编程语言提供了异常处理机制,用于处理程序运行时可能出现的各种异常情况。4
5
在仓颉语言中,异常类包括 `Error` 和 `Exception`:6
7
- `Error` 类描述仓颉语言运行时,系统内部错误和资源耗尽错误。应用程序不应该抛出这种类型错误,如果出现内部错误,只能通知给用户,尽量安全终止程序。8
- `Exception` 类描述的是程序运行时的逻辑错误或者 IO 错误导致的异常,例如数组越界或者试图打开一个不存在的文件等,这类异常需要在程序中捕获处理。9
10
开发者不可以通过继承仓颉语言内置的 Error 或其子类来自定义异常,但是可以继承内置的 Exception 或其子类来自定义异常,例如:11
12
<!-- compile -->13
14
15
下表展示了 `Exception` 的主要函数及其说明:16
17
| 函数种类 | 函数及说明 |18
| :------- |:--------------------------------------------------------------------------|19
| 构造函数 | `init()` 默认构造函数。 |20
| <!--DelRow--> 构造函数 | `init(causedBy: Exception)` 可以设置触发原因的构造函数(异常消息为空)。 |21
| 构造函数 | `init(message: String)` 可以设置异常消息的构造函数。 |22
| <!--DelRow--> 构造函数 | `init(message: String, causedBy: Exception)` 可以设置异常消息和触发原因的构造函数。 |23
| <!--DelRow--> 成员属性 | `mut prop causedBy: ?Exception` 异常的触发原因。 |24
| 成员属性 | `open prop message: String` 返回发生异常的详细信息。该消息在异常类构造函数中初始化,默认为空字符串。 |25
| 成员函数 | `open func toString(): String` 返回异常类型名以及异常的详细信息,其中,异常的详细信息会默认调用 message。 |26
| 成员函数 | `func getClassName(): String` 返回用户定义的类名,子类需要重写该方法以返回子类的名称。 |27
| 成员函数 | `func printStackTrace(): Unit` 打印堆栈信息至标准错误流。 |28
29
下表展示了 `Error` 的主要函数及其说明:30
31
| 函数种类 | 函数及说明 |32
| :------- | :----------------------------------------------------------- |33
| 成员属性 | `open prop message: String` 返回发生错误的详细信息。该消息在错误发生时,内部初始化,默认为空字符串。 |34
| 成员函数 | `open func toString(): String` 返回错误类型名以及错误的详细信息,其中,错误的详细信息会默认调用 message。 |35
| 成员函数 | `func printStackTrace(): Unit` 打印堆栈信息至标准错误流。 |Code 1 · cangjie
1
open class FatherException <: Exception {2
public init() {3
super("This is FatherException.")4
}5
public init(message: String) {6
super(message)7
}8
public open override func getClassName(): String {9
"FatherException"10
}11
}12
13
class ChildException <: FatherException {14
public init() {15
super("This is ChildException.")16
}17
public open override func getClassName(): String {18
"ChildException"19
}20
}