diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # ChangeLog for githash
 
+## 0.1.2.0
+
+* Add `tGitInfoTry` and `tGitInfoCwdTry`
+
 ## 0.1.1.0
 
 * Add message of the most recent commit
diff --git a/githash.cabal b/githash.cabal
--- a/githash.cabal
+++ b/githash.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: 380f229f7ff7b7cb44366114b73ff9012ed62bf5baef879380562b3c56ed80e9
+-- hash: 2b87276bb2ac5b00efe63f26346081485fe2d35e29770fcceb6fa7ab6f1fd414
 
 name:           githash
-version:        0.1.1.0
+version:        0.1.2.0
 synopsis:       Compile git revision info into Haskell projects
 description:    Please see the README and documentation at <https://www.stackage.org/package/githash>
 category:       Development
diff --git a/src/GitHash.hs b/src/GitHash.hs
--- a/src/GitHash.hs
+++ b/src/GitHash.hs
@@ -52,6 +52,8 @@
     -- * Template Haskell
   , tGitInfo
   , tGitInfoCwd
+  , tGitInfoTry
+  , tGitInfoCwdTry
   ) where
 
 import Control.Applicative
@@ -197,7 +199,7 @@
 instance Exception GitHashException
 
 -- | Load up the 'GitInfo' value at compile time for the given
--- directory.
+-- directory. Compilation fails if no info is available.
 --
 -- @since 0.1.0.0
 tGitInfo :: FilePath -> Q (TExp GitInfo)
@@ -210,9 +212,36 @@
   mapM_ addDependentFile (_giFiles gi)
   lift (gi :: GitInfo) -- adding type sig to make the unsafe look slightly better
 
+-- | Try to load up the 'GitInfo' value at compile time for the given
+-- directory.
+--
+-- @since 0.1.2.0
+tGitInfoTry :: FilePath -> Q (TExp (Either String GitInfo))
+tGitInfoTry fp = unsafeTExpCoerce $ do
+  egi <- runIO $ do
+    eroot <- getGitRoot fp
+    case eroot of
+      Left e -> return $ Left $ show e
+      Right root -> do
+        einfo <- getGitInfo root
+        case einfo of
+          Left e -> return $ Left $ show e
+          Right info -> return $ Right info
+  case egi of
+    Left _ -> return ()
+    Right gi -> mapM_ addDependentFile (_giFiles gi)
+  lift (egi :: Either String GitInfo) -- adding type sig to make the unsafe look slightly better
+
 -- | Load up the 'GitInfo' value at compile time for the current
 -- working directory.
 --
 -- @since 0.1.0.0
 tGitInfoCwd :: Q (TExp GitInfo)
 tGitInfoCwd = tGitInfo "."
+
+-- | Try to load up the 'GitInfo' value at compile time for the current
+-- working directory.
+--
+-- @since 0.1.2.0
+tGitInfoCwdTry :: Q (TExp (Either String GitInfo))
+tGitInfoCwdTry = tGitInfoTry "."
