【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 边界收口。
posted @ 2026-09-13 05:05  方东信  阅读(2)  评论(0)    收藏  举报