diff --git a/modules/mol/base/src/atom_view.cc b/modules/mol/base/src/atom_view.cc
index 5811a2d5567ea3db1de2ebe8eede8fb4c9a7c631..20c14afbe42d93971aa84478f04db9c2199e065c 100644
--- a/modules/mol/base/src/atom_view.cc
+++ b/modules/mol/base/src/atom_view.cc
@@ -67,7 +67,10 @@ AtomView::AtomView(const ResidueView& residue_view,
 ResidueView AtomView::GetResidue() const 
 {
   this->CheckValidity();
-  return ResidueView(data_->residue.lock(), Impl()->GetResidue());
+  if (!data_->residue.expired()) {
+    return ResidueView(data_->residue.lock(), Impl()->GetResidue());    
+  }
+  throw InvalidHandle();
 }
 
 void AtomView::Apply(EntityVisitor& visitor) 
diff --git a/modules/mol/base/src/chain_view.cc b/modules/mol/base/src/chain_view.cc
index 0e6458c388f6c9ee1cdde4c49eada4781330e3cd..e5d7e05499460fa1d76468f313774a67e353d438 100644
--- a/modules/mol/base/src/chain_view.cc
+++ b/modules/mol/base/src/chain_view.cc
@@ -79,7 +79,11 @@ ChainView::ChainView() {
 }
 
 EntityView ChainView::GetEntity() const {
-  return EntityView(data_->entity.lock(), Impl()->GetEntity());
+  this->CheckValidity();
+  if (!data_->entity.expired()) {
+    return EntityView(data_->entity.lock(), Impl()->GetEntity());    
+  }
+  throw InvalidHandle();
 }
 
 ChainView::ChainView(const EntityView& entity,
diff --git a/modules/mol/base/src/residue_view.cc b/modules/mol/base/src/residue_view.cc
index 8f76c5766d1f215bc2a3ee46b5e892a7347ee038..2fef9c9432c1f172b997df6f92c56f24b21e3f4a 100644
--- a/modules/mol/base/src/residue_view.cc
+++ b/modules/mol/base/src/residue_view.cc
@@ -138,7 +138,10 @@ const AtomViewList& ResidueView::GetAtomList() const {
 
 ChainView ResidueView::GetChain() const {
   this->CheckValidity();
-  return ChainView(data_->chain.lock(), Impl()->GetChain());
+  if (!data_->chain.expired()) {
+    return ChainView(data_->chain.lock(), Impl()->GetChain());
+  }
+  throw InvalidHandle();
 }