【问题标题】:How to put a newline in the message of a new Error object Javascript?如何在新的错误对象 Javascript 的消息中添加换行符?
【发布时间】:2017-01-16 17:31:24
【问题描述】:

我在服务中有一个类似这样的功能:

Policies 是一个函数列表,如果违反策略(例如密码没有数字或大写字母),将抛出错误

 function myFunction(policies, password){ 
  var policiesError = ''; 
  policies.forEach(function(policy) {      
    try {
      policy(password, payload);
    } catch (err) {
      policiesError += err.message + '\n';   // Also tried `concat()`
    }
  });
  if (policiesError){
    throw new Error(policiesError);
  }
}

在我的controller 我有:

try{
  myService.myFunction(myFunctions, 'password');
} catch (err){
  $scope.policiesError = err.message; // Which is used in as {{policiesError}} to display   
}

控制器中消息的结果是这样的:

"Password too shortPassword has no lettersInvalid characters in password"

但我实际上需要它:

"Password too short
Password has no letters
Invalid characters in password"

这很简单,但是我的头撞在桌子上一段时间了,这很令人沮丧。

关于如何使用new Error 获得格式良好的消息并捕获它有什么建议吗?

【问题讨论】:

  • 是 HTML 吗?然后使用<br />
  • 每个新行都会用句点分隔吗?如果是这样,您可以简单地使用:err.message.split('.') 后跟 err.message.join('\n')
  • 我可能错过了我也验证特殊字符,那是我不能按句点分割。 (也有一些错误消息中有句点)
  • 实际上并不警觉”——然后呢?请显示显示消息的实际代码,因为它似乎是换行符未正确显示的罪魁祸首
  • @Bergi, $scope.var_in_scope = err.message; 和那个在 html 中使用,例如:<span ng-if="var_in_scope" >{{var_in_scope}}</span>

标签: javascript angularjs string error-handling newline


【解决方案1】:

所以,@Bergi 让我意识到问题出在关于 white-space- 的 CSS 属性上 我在我们的代码中编写了一个新特性,所以我没有移动任何 CSS,也没有想到它。 但是,是的,CSS 正在摆脱 Javascript 中添加的 \n

很抱歉没有从一开始就检查这么简单的事情。

【讨论】:

    【解决方案2】:

    使用\r\n 而不仅仅是\n

    throw new Error("\r\nLine 1 Error Description.\r\nLine 2 Error Description.");
    

    将返回:

    JavaScript Error line(102): // Your error with message below.
    Line 1 Error Description.
    Line 2 Error Description.
    

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 2012-05-10
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 2013-07-11
      • 2021-10-14
      • 1970-01-01
      相关资源
      最近更新 更多