7. Natasha 的异常
使用方法
Natasha 在编译时出错会抛出异常,异常 Model 如下:
public sealed class NatashaException : Exception
{
//格式化后的脚本字符串
public string Formatter;
//错误类型
public NatashaExceptionKind ErrorKind;
//roslyn诊断集合
public List<Diagnostic> Diagnostics;
/// <summary>
/// 详细的编译信息
/// </summary>
public string CompileMessage;
}
如何监控和获取异常
Natasha 的事件执行流程如下:
- 添加语法树时:
- 使用 FastAddScriptWithoutCheck,则不会抛出异常。
- 使用 Add 则会进行语法检查,并抛出异常。
- 编译时:
- 编译后先触发 LogCompilationEvent 事件,用来获取编译后的信息。
- 如果编译成功会继续引发 CompileSucceedEvent 事件。
- 如果编译失败会继续引发 CompileFailedEvent 事件。
- 编译周期之外:
- 编译过后,可以通过 GetException() 获取异常(可能为空)。