Что проверить, чтобы поймать ошибку в Process.run? - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь запустить команду keytool с Process.run, и если что-то пойдет не так, я хочу остановить программу. Я проверял свойство stderr ProcessResult, но оно также записывает его, если оно успешно. Так что я должен проверять, чтобы ловить ошибки и останавливать программу?

await Process.run(
        'keytool',
        [
          '-genkey',
          '-v',
          '-keystore',
          '/Users/figengungor/key.jks',
          '-keyalg',
          'RSA',
          '-keysize',
          '2048',
          '-validity',
          '10000',
          '-alias',
          'key',
          '-dname',
          'cn=Unknown, ou=Unknown, o=Unknown, c=Unknown',
          '-storepass',
          '123456',
        ],)
    .then((ProcessResult results) {
  print('${results.stdout}');
  if (results.stderr != null && results.stderr.toString().isNotEmpty) {
    print('${results.stderr}');
    print('EXIT CODE ${results.exitCode}');
    exit(0);
  }
  print('Keystore file is generated at /Users/figengungor/key.jks');
});

1 Ответ

0 голосов
/ 20 марта 2020

Я только что проверил exitCode. Если это не ноль, то smt не так. Но сообщение об ошибке может быть внутри stdout или stderr. Итак, я пошел так:

if(results.exitCode!=0) {
  print('STDOUT ${results.stdout}');
  print('STDERR ${results.stderr}');
  print('EXIT CODE ${results.exitCode}');
  exit(1);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...