Python 基础语法速通

第 7 章:错误与空值

try/except;把 Optional 思维迁到 None 检查。

01try / except / finally

Python
try:
    n = int("x")
except ValueError as e:
    print("bad", e)
finally:
    print("done")
Kotlin
try {
    val n = "x".toInt()
} catch (e: NumberFormatException) {
    println("bad $e")
} finally {
    println("done")
}
ArkTS
try {
  const n = Number.parseInt("x");
  if (Number.isNaN(n)) {
    throw new Error("bad");
  }
} catch (e) {
  console.info("bad", e);
} finally {
  console.info("done");
}
先捕获具体异常(如 ValueError),少写裸 except:。

02抛出

Python
def must_positive(n: int) -> int:
    if n <= 0:
        raise ValueError("n must be > 0")
    return n
Kotlin
fun mustPositive(n: Int): Int {
    require(n > 0) { "n must be > 0" }
    return n
}
ArkTS
function mustPositive(n: number): number {
  if (n <= 0) {
    throw new Error("n must be > 0");
  }
  return n;
}

03空值思维对照

Kotlin 的 ? / ArkTS 联合类型,在 Python 里变成显式 None 检查或早期返回。

Python
def len_or_zero(s: str | None) -> int:
    if s is None:
        return 0
    return len(s)
Kotlin
fun lenOrZero(s: String?): Int = s?.length ?: 0
ArkTS
function lenOrZero(s: string | null): number {
  return s?.length ?? 0;
}

04for/else、try/else

Python 特色:循环正常结束才走 else(被 break 则不走)。

Python
for x in [1, 2, 3]:
    if x == 9:
        break
else:
    print("not found")
Kotlin
// 无直接对应;用 flag 或 firstOrNull
val found = listOf(1, 2, 3).any { it == 9 }
if (!found) println("not found")
ArkTS
// 同样用标志位
let found = false;
for (const x of [1, 2, 3]) {
  if (x === 9) { found = true; break; }
}
if (!found) console.info("not found");

Python 基础语法速通 · 对照 Kotlin / ArkTS · 本地预览稿