1# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5"""
6Exception classes raised by AdbWrapper and DeviceUtils.
7"""
8
9class BaseError(Exception):
10  """Base exception for all device and command errors."""
11  pass
12
13
14class CommandFailedError(BaseError):
15  """Exception for command failures."""
16
17  def __init__(self, msg, device=None):
18    super(CommandFailedError, self).__init__(
19        '%s%s' % ('(device: %s) ' % device if device else '', msg))
20
21
22class AdbCommandFailedError(CommandFailedError):
23  """Exception for adb command failures."""
24
25  def __init__(self, cmd, msg, device=None):
26    super(AdbCommandFailedError, self).__init__(
27        'adb command \'%s\' failed with message: \'%s\'' % (' '.join(cmd), msg),
28        device=device)
29
30
31class CommandTimeoutError(BaseError):
32  """Exception for command timeouts."""
33  pass
34
35
36class DeviceUnreachableError(BaseError):
37  """Exception for device unreachable failures."""
38  pass
39
40
41class NoDevicesError(BaseError):
42  """Exception for having no devices attached."""
43
44  def __init__(self):
45    super(NoDevicesError, self).__init__('No devices attached.')
46
47