fbpx

How error propagate between contracts in Solidity?

Julien Klepatch

Let's say we have 2 smart contracts. A and B. A calls B, and B throws an error.

What happen in A?

Not sure? haha, that's a tricky one!

Actually it depends on how B was called.

If B was called the normal way, the whole transaction get reverted:

contract A {
  function foo() {
   B b = new B();
   b.willThrow();
  }
}
contract B {
  function willThrow() {
    revert();
  }
}

BUT, if B was called with a low-level call() method, the error will NOT be propagated to A. Instead, A will received a false boolean value indicating there was an error in B. This way, A can recover from the error and handle the error itself.

Check out this video where I explain this in full details, as well as other error handling mechanisms in Solidity like assert, revert, require and throw.

By the way, in the Dapp 30 course, there is a bonus section dedicated to debugging in Solidity when I explain in details the different kind of errors in Solidity and how to debug them.

0 Comments

Leave a Reply

More great articles

New Features In Solidity 5.0

The upcoming Solidity 5.0 version is coming with a couple of breaking changes, and you should make sure to learn…

Read Story

Understanding CryptoKitties Source code

This article is written for developers, and while it’s not an absolute beginner’s introduction to Solidity, I tried to include…

Read Story

Interview With Founder Of CryptoJobsList | How To Find A Job In Crypto / Blockchain Industry?

https://youtu.be/YYZN96g1C7g I have interviewed Raman, the founder of cryptojobslist.com. CryptoJobsList is the first job board for crypto / Blockchain jobs.…

Read Story

Never miss a minute

Get great content to your inbox every week. No spam.
[contact-form-7 id="6" title="Footer CTA Subscribe Form"]
Arrow-up