2

データベースにクエリを実行するクラスを定義しました。

  class SqlGetData {
    ConnectionPool pool;
    List<String> rows;    
    SqlGetData(this.pool);  
    Future <List<String>> run(String sQuery) {
      rows = new List<String>();
      return readData(sQuery).then((_) {
        return rows;
      });
    }
    Future readData(String sQuery) {
      return pool.query(sQuery).then((result) {
        return result.forEach((row) {
          String s = JSON.encode(row);
          rows.add(s);
       });
      });
    }
  }

私はこれを次のように呼びます:

  var sql = new SqlGetData(pool);
  sql.run('select firstName, lastName from person where id =' + s1).then((rows) {
    some code here to process the data  
  });  

データベースが実行されていない場合、return pool.queryinでエラーが発生しreadDataます。これをキャッチして、エラー メッセージでクライアントに渡したいと考えています。try ... catch ...サーバーの停止を防ぐには、どのように、どこにコーディングすればよいですか? 私の問題は、先物を返さなければならないことですが、これはまだ把握するのが難しいです.

4

2 に答える 2

1

この記事Futures and Error Handlingを見てください (まだ読んでいない場合)。

次の 2 つの場所があります。

.then((_) => doSomething(), 
      onError: (e) => doErrorHandling()).catchError((e) => doErrorHandling());
于 2014-02-18T17:01:39.670 に答える