首页 > 解决方案 > react-native 无法处理 try catch 块中的错误

问题描述

我正在尝试使用 fetch() 函数发送图像。显示红屏和。发送数据之前出现“没有这样的文件或目录”错误。try catch 块没有处理这个错误。

019-02-11 22:35:00.375 [错误][tid:com.facebook.react.NetworkingQueue][RCTNetworking.mm:272] 错误处理请求正文:错误域 = NSCocoaErrorDomain 代码 = 260“文件“5325CBBA-340E -4227-AE17-5D42021DF648.jpg”无法打开,因为没有这样的文件。” UserInfo={NSFilePath=/Users/myuser/Library/Developer/CoreSimulator/Devices/9362AC50-7C82-4C8D-B686-39A6718CBA5F/data/Containers/Data/Application/64CD29E3-2BD9-4D9A-B168-4B12A848889C/Documents/images/ 5325CBBA-340E-4227-AE17-5D42021DF648.jpg,NSUnderlyingError=0x600003c0a790 {错误域=NSPOSIXErrorDomain Code=2“没有这样的文件或目录”}}

如何处理这个错误?

错误画面:https ://i.hizliresim.com/bVvqrm.png

  VeriListele() {

    try {
      db.transaction((tx) => {
        tx.executeSql("select * from " + TABLO_DATA + " where " + ROW_GONDERILDI_ + "=0", [], (tx, results) => {
          console.log("Query completed2");

          // Get rows with Web SQL Database spec compliance.
          console.log(results.rows);
          var len = results.rows.length;
          const data = new FormData();
          for (let i = 0; i < len; i++) {
            try {
              let row = results.rows.item(i);
              console.log(row);
              var FotoString='';
              if (row.resim1!='' && row.resim1!='undefined') {
                var resimjson=JSON.parse(row.resim1);
                FotoString+='&photo[]='+row.resim1;
                data.append('photo1[]', {
                  uri: resimjson.uri,
                  type: resimjson.type, // or photo.type
                  name: 'photo'
                });
              }
              if (row.resim2!='' && row.resim2!='undefined') {
                FotoString+='&photo[]='+row.resim2;
                var resimjson=JSON.parse(row.resim2);
                data.append('photo1[]', {
                  uri: resimjson.uri,
                  type:resimjson.type, // or photo.type
                  name: 'photo'
                });
              }
              if (row.resim3!='' && row.resim3!='undefined') {
                FotoString+='&photo[]='+row.resim3;
                var resimjson=JSON.parse(row.resim3);
                data.append('photo1[]', {
                  uri: resimjson.uri,
                  type: resimjson.type, // or photo.type
                  name: 'photo'
                });
              }
              if (row.resim4!='' && row.resim4!='undefined') {
                FotoString+='&photo[]='+row.resim4;
                var resimjson=JSON.parse(row.resim4);
                data.append('photo1[]', {
                  uri:resimjson.uri,
                  type: resimjson.type, // or photo.type
                  name: 'photo'
                });
              }
              if (row.video!='' && row.video!='undefined') {
                FotoString+='&video[]='+row.video;
                var resimjson=JSON.parse(row.video);
                data.append('video1[]', {
                  uri: resimjson.uri,
                  type: resimjson.type, // or photo.type
                  name: 'video'
                });
              }
              try {

              } catch (error) {

              }


          data.append('api_token', Global.GToken); // you can append anyone.
          data.append('resid', row.id); // you can append anyone.

          data.append('additional', row.ek_aciklama); // you can append anyone.

          data.append('issue_date', row.tarih.split(' ')[0]); // you can append anyone.
          try {
            fetch("https://myapi.com/add", {
              method: 'post',
              body: data
            }).then(function(response){
              console.log(response);
             var responseJson=JSON.parse(response._bodyText)
            //  console.log();

              console.log(response);
            //  console.log(responseJson);
            //  console.log(responseJson);
              if (responseJson.sonuc == 1) {
                db.transaction((tx1) => {
                  console.log(row.id);
                  tx1.executeSql("update " + TABLO_DATA + " set gonderildi=1 where id=" + row.id + "");
                });


              } else if (responseJson.sonuc==0) {
                console.log('basarisiz');
                db.transaction((tx1) => {
                 // tx1.executeSql("update " + TABLO_DATA + " set gonderildi=1 where id=" + row.id + "");
                });
              }
            }).catch(error =>console.log(error) )
          } catch (error) {
            console.log('bb');
          }




            } catch (error) {
              console.log('ss');
            }

          }
        });
      });

    } catch (error) {
      console.log('dd');
    }
    //  const Veriler = await AsyncStorage.getItem(‘products’)
    }

标签: iosreact-native

解决方案


我看到有关丢失文件的错误日志,但看不到它与fetch调用有何关系。你在发布那个文件吗?如果是这样,你能在你的代码中澄清这一点吗?

如果您没有在fetch通话中使用该文件,那么您需要弄清楚它在哪里被使用以及为什么它不在那里。

仅供参考,您有一个.catch之后fetch会记录错误,然后防止任何fetch错误在try/catch.


推荐阅读