Search code examples
dartdart-async

pass an errormessage from server to client


I defined some class to query a database.

  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);
       });
      });
    }
  }

which I call like this:

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

If the database is not running I get an error on the return pool.query in readData, which I want to catch and pass to the client in some error message. How and where can I code the try ... catch ... to prevent the server from dying? My problem is that I have to return futures, which is still difficult for me to grasp.


Solution

  • Take a look at this article Futures and Error Handling (if you haven't already).

    There are two places:

    .then((_) => doSomething(), 
          onError: (e) => doErrorHandling()).catchError((e) => doErrorHandling());