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

前端之家收集整理的这篇文章主要介绍了css – 如何以编程方式输出错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我写了一个ASP.NET MVC操作方法,接收一个.less文件名,通过Less.Parse(< filename>)处理它,并输出处理的css文件.

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

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

解决方法

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

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

  1. public class DotlessConfiguration
  2. {
  3. // Properties
  4. public bool CacheEnabled { get; set; }
  5. public Type LessSource { get; set; }
  6. public Type Logger { get; set; }
  7. public LogLevel LogLevel { get; set; }
  8. public bool MinifyOutput { get; set; }
  9. public int Optimization { get; set; }
  10. public bool Web { get; set; }
  11. }

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

  1. public interface ILogger
  2. {
  3. // Methods
  4. void Debug(string message);
  5. void Error(string message);
  6. void Info(string message);
  7. void Log(LogLevel level,string message);
  8. void Warn(string message);
  9. }

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

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

我希望这至少有点帮助.

猜你在找的CSS相关文章