aardio 文档
aardio 范例: 错误调试/提问必读
Python 常见问题解答、提问前必读
//错误调试/提问必读
/*
Python 常见问题解答、提问前必读
https://api.aardio.com/cdn/python/faq/
*/
import console.int;
import py3;
/*
一般执行 Python 代码出错会报错,直接显示错误信息。
但有些地方是返回 null (因为可能需要用这些函数 null 值做检测而不是报错)。
*/
py3.import("不存在的模块");//例如这个函数出错就返回 nul
//可以用 py3.lasterr() 查看错误信息
console.log(py3.lasterr());
//打开控制台查看 Python 输出的错误信息
console.open();
// Python 用 sys.excepthook 自定义异常处理,类似 aardio 的 global.onError
py3.exec(`
import sys
import traceback
def handle_exception(exc_type, exc_value, exc_traceback):
if issubclass(exc_type, KeyboardInterrupt):
sys.__excepthook__(exc_type, exc_value, exc_traceback)
return
print("Uncaught exception", exc_type, exc_value)
traceback.print_exception(exc_type, exc_value, exc_traceback)
sys.excepthook = handle_exception
# 这将触发未捕获的异常
x = 1 / 0
`)
console.more(1)
// Python 用 try 捕获错误,用 traceback 打印错误堆栈( aardio 代码有个类似的 debug 库)
py3.exec(`
import traceback
try:
# 可能会引发异常的代码
x = 1 / 0
except Exception as e:
print(f"An error occurred: {e}")
traceback.print_exc()
`)
console.more(1)
//或者用 logging 模块
py3.exec(`
import logging
import traceback
logging.basicConfig(level=logging.ERROR)
try:
# 可能会引发异常的代码
x = 1 / 0
except Exception as e:
logging.error("An error occurred", exc_info=True)
`)
console.more(1)
/*
或者用 contextmanager 模块。
with 语句封装 try ... except ... finall (与 aardio 里的 with 完全不是一回事)
而 contextmanager 用于配合 with 语句管理上下文。
*/
py3.exec(`
from contextlib import contextmanager
import traceback
@contextmanager
def handling_exceptions():
try:
yield
except Exception as e:
print(f"An error occurred: {e}")
traceback.print_exc()
with handling_exceptions():
# 可能会引发异常的代码
x = 1 / 0
`)
Markdown 格式