anchor.diff:  
       try {
         jsonStr = JSON.encode(json);
  -    } catch (e) {
  -      PinLogger.instance.shout('[PinUtility] writeJsonFile: Error in encoding JSON obj: ${json}');
  -      completer.complete(null);
  +    } catch (e, trace) {
  +      handleError(e, trace, message: '[PinUtility] writeJsonFile: Error in encoding JSON obj: ${json}');
  +      completer.completeError(e, trace);
       }
   
  -    (new File(path)).writeAsString(jsonStr).then((_) {
  +    (new File(path)).writeAsString(jsonStr)
  +    .then((_) {
         completer.complete(_);
  +    })
  +    .catchError((e, trace) {
  +      PinUtility.handleError(e, trace);
  +      completer.completeError(e, trace);
       });
   
       return completer.future;
  
positive.code:     String fileContent = '';
  
      if (file.existsSync()) {
        fileContent = new File(path).readAsStringSync();
      } else {
        PinLogger.instance.warning('[PinUtility] readJsonFileSync: Target file does not exist or is not file: ${path}');
      }
  
negative.code:       try {
          dir.createSync(recursive: true);
          result = true;
        } catch(e, trace) {
          handleError(e, trace, message: '[PinUtility] checkDirExistsSync: Create dir failed: ${path} with Exception: ${e}');
        }
      } else {
        result = true;
  