diff --git a/substrate/frame/sudo/src/lib.rs b/substrate/frame/sudo/src/lib.rs
index 0824c7b954c42c8f85381ba4fa6275f5221142ed..d19c92358c287e74a4d87de3e1dcf3d0dd2a9ae6 100644
--- a/substrate/frame/sudo/src/lib.rs
+++ b/substrate/frame/sudo/src/lib.rs
@@ -87,7 +87,7 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 
 use sp_std::prelude::*;
-use sp_runtime::traits::{StaticLookup, Dispatchable};
+use sp_runtime::{DispatchResult, traits::{StaticLookup, Dispatchable}};
 
 use frame_support::{
 	Parameter, decl_module, decl_event, decl_storage, decl_error, ensure,
@@ -130,15 +130,8 @@ decl_module! {
 			let sender = ensure_signed(origin)?;
 			ensure!(sender == Self::key(), Error::<T>::RequireSudo);
 
-			let res = match call.dispatch(frame_system::RawOrigin::Root.into()) {
-				Ok(_) => true,
-				Err(e) => {
-					sp_runtime::print(e);
-					false
-				}
-			};
-
-			Self::deposit_event(RawEvent::Sudid(res));
+			let res = call.dispatch(frame_system::RawOrigin::Root.into());
+			Self::deposit_event(RawEvent::Sudid(res.map(|_| ()).map_err(|e| e.error)));
 		}
 
 		/// Authenticates the current sudo key and sets the given AccountId (`new`) as the new sudo key.
@@ -204,7 +197,7 @@ decl_module! {
 decl_event!(
 	pub enum Event<T> where AccountId = <T as frame_system::Trait>::AccountId {
 		/// A sudo just took place.
-		Sudid(bool),
+		Sudid(DispatchResult),
 		/// The sudoer just switched identity; the old key is supplied.
 		KeyChanged(AccountId),
 		/// A sudo just took place.