【far 语言】异常处理
本文是「far 语言」系列文档之一,总目录见《【far 语言】语言文档目录》。
异常处理
Far 异常为 Java 风格:
throw三形态 +try{}catch(Type e){}finally{},多 catch 按序匹配。
抛出异常
throw "boom"; // 字符串 → Exception
throw new MyError("custom error"); // 自定义异常对象
throw e; // 再抛
捕获
try {
throw "boom";
} catch (Exception e) {
println(e.getMessage());
} finally {
println("finally"); // 无论是否异常都执行
}
多 catch 按序匹配
interface IError { }
class MyError impl IError { }
try {
throw new MyError("custom");
} catch (MyError e) { // 精确类型名匹配
println("MyError: " + e.getMessage());
} catch (IError e) { // 接口 impl is-a 多态捕获
println("iface: " + e.getMessage());
} catch (Exception e) { // 兜底
println(e.getMessage());
} finally {
println("finally");
}
- 类型匹配:先按精确类型名,再按接口
impl is-a。
传播机制
static void risk(){
throw "deep boom";
}
static void middle(){
risk(); // 无 catch,向上传播
}
static long main(string args[]){
try {
middle(); // 调用点检查逐层向上
} catch (Exception e) {
println(e.getMessage()); // deep boom
}
return 0;
}
- 异常沿调用链逐层向上传播,
try边界收口。
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号