javascript - 正确的错误处理-在javascript/Ionic中

标签 javascript angular ionic-framework error-handling

我正在使用Ionic 3应用程序,该应用程序在蓝牙打印机上打印账单。我有点迷失了如何正确处理这段代码中的错误:

  print(billToPrint){
    return this.bluetoothSerial.list().then((data)=>{
      if(data.length==0) throw new Error("no printer connected");
      console.log(data);
      console.log(data[0]);
      let subscription=this.bluetoothSerial.connect(data[0].address).subscribe(data=>{
        console.log("subscribnuto",data);
        this.bluetoothSerial.write(billToPrint).then((data)=>{
          console.log("data success", data);
        });
        subscription.unsubscribe();
      },err=>{
        throw new Error("Connection to printer failed");
      });
    },err=>{
      console.log(err);
    });
  }

在这种情况下处理错误的正确方法是什么?我希望错误会随具体的错误消息一起传播,因此我可以轻松地在页面中处理它们(此打印方法已投入使用)并显示带有错误消息的警报。有任何想法吗?还是代码的结构不好?

最佳答案

而不是抛出这些错误。您可以使用alert()通知他们。

print(billToPrint){
    return this.bluetoothSerial.list().then((data)=>{
      if(data.length === 0){ Promise.reject(new Error("no printer connected"));}
      // console.log(data);
      // console.log(data[0]);
      let subscription=this.bluetoothSerial.connect(data[0].address).subscribe(data=>{
        if(data){
           // console.log("subscribe",data);
           this.bluetoothSerial.write(billToPrint).then((data)=>{
             // console.log("data success", data);
             Promise.resolve(true);
           });
           subscription.unsubscribe();
        }else{
         Promise.resolve(false);
        }
      },err=>{
        Promise.reject(new Error("Connection to printer failed"));
      });
    },err=>{
      Promise.reject(new Error("error your processing your request"));
    });
  }

关于javascript - 正确的错误处理-在javascript/Ionic中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52003079/

相关文章:

javascript - 如果没有选中任何复选框,则构造 else 语句

javascript - jQuery - 单击要隐藏的部分但在单击内部部分时忽略

javascript - 使用 javascript/jQuery 打开 Windows 应用程序

javascript - 滚动到 div 中的某个元素

angular - 如何模拟来自服务 Angular 7 的可观察值?

javascript - angular2 TS2322 给定字符串时,类型 'Promise<void>' 不可分配给类型 'Promise<string>'

angular - spyOn 服务/组件 Angular2

javascript - 如何检查/转储 Ionic 变量

ionic-framework - ionic slider ion-slide-box 宽度小于页面宽度

angular - 如何从 Ionic 4/Angular7 中的@ViewChild 获取 nativeElement?