diff --git a/.gitignore b/.gitignore
index 813a31e..8608a82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,8 +2,8 @@
 .buildlog
 .pub/
 .dart_tool/
+.idea/
 build/
-packages
 .packages
 
 # Or the files created by dart2js.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 19853b9..129e440 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.6.3
+
+* Don't throw a FileSystemException from `current` if the working directory has
+  been deleted but we have a cached one we can use.
+
 ## 1.6.2
 
 * Set max SDK version to `<3.0.0`, and adjust other dependencies.
diff --git a/lib/path.dart b/lib/path.dart
index ed70f9d..9b7f1ab 100644
--- a/lib/path.dart
+++ b/lib/path.dart
@@ -81,7 +81,17 @@
 ///
 /// In the browser, this means the current URL, without the last file segment.
 String get current {
-  var uri = Uri.base;
+  // If the current working directory gets deleted out from under the program,
+  // accessing it will throw an IO exception. In order to avoid transient
+  // errors, if we already have a cached working directory, catch the error and
+  // use that.
+  Uri uri;
+  try {
+    uri = Uri.base;
+  } on Exception {
+    if (_current != null) return _current;
+    rethrow;
+  }
 
   // Converting the base URI to a file path is pretty slow, and the base URI
   // rarely changes in practice, so we cache the result here.
diff --git a/pubspec.yaml b/pubspec.yaml
index 5c22cb4..504474b 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,10 +1,10 @@
 name: path
-version: 1.6.2
+version: 1.6.3-dev
 
 description: >
   A string-based path manipulation library. All of the path operations you know
-  and love, with solid support on both Windows and POSIX (Linux and Mac OS X)
-  machines.
+  and love, with solid support for Windows, POSIX (Linux and Mac OS X), and the
+  web.
 author: Dart Team <misc@dartlang.org>
 homepage: http://github.com/dart-lang/path
 
diff --git a/test/io_test.dart b/test/io_test.dart
index 82d8b09..7b9d49d 100644
--- a/test/io_test.dart
+++ b/test/io_test.dart
@@ -35,8 +35,30 @@
     }
   });
 
-  test('current', () {
-    expect(path.current, io.Directory.current.path);
+  group('current', () {
+    test('returns the current working directory', () {
+      expect(path.current, io.Directory.current.path);
+    });
+
+    test('uses the previous working directory if deleted', () {
+      var dir = io.Directory.current.path;
+      try {
+        var tempPath = path.normalize(path.absolute("temp_cwd"));
+        var temp = io.Directory(tempPath);
+        temp.createSync();
+        io.Directory.current = temp;
+
+        // Call "current" once so that it can be cached.
+        expect(path.normalize(path.absolute(path.current)), equals(tempPath));
+
+        temp.deleteSync();
+
+        // Even though the directory no longer exists, no exception is thrown.
+        expect(path.normalize(path.absolute(path.current)), equals(tempPath));
+      } finally {
+        io.Directory.current = dir;
+      }
+    });
   });
 
   test('registers changes to the working directory', () {
