微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

css – 如何以编程方式输出错误?

我写了一个ASP.NET MVC操作方法,接收一个.less文件名,通过Less.Parse(< filename>)处理它,并输出处理的css文件.

只要代码无效,这样工作正常,但如果有错误,则dotLess只返回一个空字符串.所以如果处理文件错误,我的action方法返回一个空的css文件.

如何输出一个错误消息,更接近语法错误的描述呢?

解决方法

dotLess解析器捕获异常并将其输出到记录器.来自dotLess执行此操作的源代码段为LessEngine.TransformToCss:
public string TransformToCss(string source,string fileName)
{
    try
    {
        Ruleset ruleset = this.Parser.Parse(source,fileName);
        Env env = new Env();
        env.Compress = this.Compress;
        Env env2 = env;
        return ruleset.ToCSS(env2);
    }
    catch (ParserException exception)
    {
        this.Logger.Error(exception.Message);
    }
    return "";
}

Less.Parse有一个重载,它接收一个DotlessConfiguration对象,它提供了可以使用的几个属性

public class DotlessConfiguration
{
    // Properties
    public bool CacheEnabled { get; set; }
    public Type LessSource { get; set; }
    public Type Logger { get; set; }
    public LogLevel LogLevel { get; set; }
    public bool MinifyOutput { get; set; }
    public int Optimization { get; set; }
    public bool Web { get; set; }
}

您将注意到Logger属性的类型为Type.您提供的任何类型都必须实现dotless.Core.Loggers.ILogger:

public interface ILogger
{
    // Methods
    void Debug(string message);
    void Error(string message);
    void Info(string message);
    void Log(LogLevel level,string message);
    void Warn(string message);
}

正如我们在第一个代码片段中看到的那样,在解析时遇到错误时,记录器上的Error方法将被调用.

现在,所有这一切的一个粘点是实现ILogger类型的实例是如何被实例化的.在内部,dotLess使用被放入DLL的IoC容器.按照方法调用,它似乎最终会调用Activator.CreateInstance来实例化你的ILogger.

我希望这至少有点帮助.

原文地址:https://www.jb51.cc/css/216550.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。